diff --git a/compiler/checkgen.lisp b/compiler/checkgen.lisp
index 11832e35ad2436e296560de4cc4b66b99b9bb67c..d3c55eaad1c35068572a43318dd8b145fb21dadc 100644
--- a/compiler/checkgen.lisp
+++ b/compiler/checkgen.lisp
@@ -231,10 +231,11 @@
 		   ((function-info-ir2-convert kind) t)
 		   (t
 		    (dolist (template (function-info-templates kind) nil)
-		      (when (and (eq (template-policy template) :fast-safe)
-				 (valid-function-use dest
-						     (template-type template)))
-			(return t)))))))
+		      (when (eq (template-policy template) :fast-safe)
+			(multiple-value-bind
+			    (val win)
+			    (valid-function-use dest (template-type template))
+			  (when (or val (not win)) (return t)))))))))
 	  (t t))))