diff --git a/compiler/generic/vm-fndb.lisp b/compiler/generic/vm-fndb.lisp
index a668a0813bdc1508d7947850e16114b0bbfa51af..dfe5ec689f9db82ed05bc1cde12098bcf0bc5a13 100644
--- a/compiler/generic/vm-fndb.lisp
+++ b/compiler/generic/vm-fndb.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-fndb.lisp,v 1.22 1990/08/15 02:54:50 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/generic/vm-fndb.lisp,v 1.23 1990/08/21 14:58:38 wlott Exp $
 ;;;
 ;;; This file defines the machine specific function signatures.
 ;;;
@@ -227,7 +227,12 @@
 		       name (vm:primitive-object-name obj))))
 	  (when set-known
 	    (if set-trans
-		(forms `(defknown (,set-trans) (,obj-type ,slot-type)
+		(forms `(defknown (,set-trans)
+				  ,(if (and (listp set-trans)
+					    (= (length set-trans) 2)
+					    (eq (car set-trans) 'setf))
+				       (list slot-type obj-type)
+				       (list obj-type slot-type))
 			  ,slot-type ,set-known))
 		(error "Can't spec a :set-known with no :set-trans. ~S in ~S"
 		       name (vm:primitive-object-name obj)))))))