diff --git a/compiler/mips/macros.lisp b/compiler/mips/macros.lisp
index 399b70d02f910398dd2ed806179f0394c5b7fe85..274ad0f55d922f07f0b8f9d9bdabf439cad5ee82 100644
--- a/compiler/mips/macros.lisp
+++ b/compiler/mips/macros.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/macros.lisp,v 1.5 1990/02/06 12:33:14 ch Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/macros.lisp,v 1.6 1990/02/06 23:26:24 ch Exp $
 ;;;
 ;;;    This file contains various useful macros for generating MIPS code.
 ;;;
@@ -20,11 +20,12 @@
   "Emit a nop."
   '(inst or zero-tn zero-tn zero-tn))
 
-(defmacro move (dst src)
-  "Move SRC into DST (unless they are already the same)."
+(defmacro move (dst src &optional (always-emit-code-p nil))
+  "Move SRC into DST (unless they are location= and ALWAYS-EMIT-CODE-P
+  is nil)."
   (once-only ((n-dst dst)
 	      (n-src src))
-    `(unless (location= ,n-dst ,n-src)
+    `(unless (and (location= ,n-dst ,n-src) (not always-emit-code-p))
        (inst or ,n-dst ,n-src zero-tn))))
 
 (defmacro b (label)