I'm actually not sure that this patch is enough. I don't understand exactly the ramifications, but with the COND in its current ordering, a non-local special variable that is declared as ignored gets a warning as an ignored undefined variable rather than an ignored special. I'm not sure that's right, but didn't want to change it.
Here's an example:
(defun warning-goofs ()
(declare (ignore specialvar undeclared))