diff --git a/compiler/knownfun.lisp b/compiler/knownfun.lisp
index 5e3e23d69d1718ce197ca2ce2067a361fa951bac..8399e32bef7a92f396a812414fecf099a02df793 100644
--- a/compiler/knownfun.lisp
+++ b/compiler/knownfun.lisp
@@ -146,10 +146,13 @@
 (proclaim '(function %defknown (list list attributes &key (derive-type function)
 				     (optimizer function))))
 (defun %defknown (names type attributes &key derive-type optimizer)
+  (declare (ignore derive-type))
   (let ((ctype (specifier-type type))
 	(info (make-function-info :attributes attributes
 ;				  :derive-type derive-type  Until database is fixed...
-				  :optimizer optimizer)))
+				  :optimizer optimizer))
+	(*info-environment* (or (backend-info-environment *target-backend*)
+				*info-environment*)))
     (dolist (name names)
       (setf (info function type name) ctype)
       (setf (info function where-from name) :declared)
@@ -167,6 +170,8 @@
 ;;;
 (proclaim '(function function-info-or-lose (t) function-info))
 (defun function-info-or-lose (name)
-  (let ((old (info function info name)))
-    (unless old (error "~S is not a known function." name))
-    (setf (info function info name) (copy-function-info old))))
+  (let ((*info-environment* (or (backend-info-environment *target-backend*)
+				*info-environment*)))
+    (let ((old (info function info name)))
+      (unless old (error "~S is not a known function." name))
+      (setf (info function info name) (copy-function-info old)))))