diff --git a/compiler/checkgen.lisp b/compiler/checkgen.lisp
index 445b8f53082a834c2a72bc1295bd3aa396a39b1b..11832e35ad2436e296560de4cc4b66b99b9bb67c 100644
--- a/compiler/checkgen.lisp
+++ b/compiler/checkgen.lisp
@@ -106,10 +106,11 @@
 	       (found-super nil))
 	   (dolist (x *type-predicates*)
 	     (let ((stype (car x)))
-	       (when (csubtypep type stype)
-		 (setq found-super t)
+	       (when (and (csubtypep type stype)
+			  (not (union-type-p stype))) ;Not #!% COMMON type.
 		 (let ((stype-cost (type-test-cost stype)))
 		   (when (< stype-cost min-cost)
+		     (setq found-super t)
 		     (setq min-type stype  min-cost stype-cost))))))
 	   (if found-super
 	       min-type