diff --git a/code/pred.lisp b/code/pred.lisp
index 3e6c4c086e2cfdc718c93bcd0da62d41e822655e..3895feee4162b57377e30a5b935ede7dabed910e 100644
--- a/code/pred.lisp
+++ b/code/pred.lisp
@@ -322,15 +322,13 @@
   (declare (optimize speed))
   (let ((type (type-expand type)))
     (if (symbolp type)
-	(case (info type kind type)
-	  ((:primitive :structure)
-	   (and (structurep object)
-		(let ((obj-name (%primitive header-ref object 0)))
-		  (or (eq obj-name type)
-		      (let ((def (info type structure-info obj-name)))
-			(not (null (memq type (c::dd-includes def)))))))))
-	  (t
-	   (error "~S is an unknown type specifier." type)))
+	(let ((def (info type defined-structure-info obj-name)))
+	  (if def
+	      (and (structurep object)
+		   (let ((obj-name (%primitive header-ref object 0)))
+		     (or (eq obj-name type)
+			 (not (null (memq type (c::dd-includes def)))))))
+	      (error "~S is an unknown type specifier." type)))
 	(error "~S is an unknown type specifier." type))))