Index: /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp
===================================================================
--- /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 8232)
+++ /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 8233)
@@ -275,4 +275,6 @@
                                        ((n :u16const))
                                        ((temp :u32)))
+  ;; xxx temp will probably be eax (which is nargs, too), so preserve it.
+  (pushl (:%l x8632::nargs.l))
   (rcmpw (:%w x8632::nargs) (:$w (:apply ash n x8632::word-shift)))
   (movw (:%w x8632::nargs) (:%w temp))
@@ -280,8 +282,9 @@
   :loop
   (addw (:$w x8632::fixnumone) (:%w temp))
+  (pushl (:$l x8632::nil-value))
   (cmpw (:$w (:apply ash n x8632::word-shift)) (:%w temp))
-  (pushl (:$l x8632::nil-value))
   (jne :loop)
-  :done)
+  :done
+  (popl (:%l x8632::nargs.l)))
 
 (define-x8632-vinsn save-lisp-context-no-stack-args (()
@@ -1365,9 +1368,11 @@
   (pushl (:%l x8632::ra0)))
 
-;; ????
 (define-x8632-vinsn emit-aligned-label (()
                                         ((label :label)))
+  ;; We don't care about label.
+  ;; We just want the label following this stuff to be tra-tagged.
   (:align 3)
-  (:long (:^ label)))
+  (:long 0)
+  (:byte 0))
 
 ;; pass-multiple-values-symbol
