Index: /branches/arm/compiler/ARM/arm2.lisp
===================================================================
--- /branches/arm/compiler/ARM/arm2.lisp	(revision 13835)
+++ /branches/arm/compiler/ARM/arm2.lisp	(revision 13836)
@@ -7835,11 +7835,16 @@
               (arm2-open-undo $undostkblk))
             (with-imm-target (ptr-reg) (by-reg :s32)
-              (arm2-one-targeted-reg-form seg by by-reg)
-              (unless triv-by
-                (! temp-pop-unboxed-word ptr-reg)
-                (arm2-close-undo))
-              (with-imm-target (ptr-reg by-reg) (result :address)
-                (! fixnum-add result ptr-reg by-reg)
-                (<- result)))))
+              (let* ((mask *available-backend-imm-temps*)
+                     (*available-backend-imm-temps* mask))
+                (when triv-by
+                  (use-imm-temp (%hard-regspec-value ptr-reg)))
+                (arm2-one-targeted-reg-form seg by by-reg)
+                (setq *available-backend-imm-temps* mask)
+                (unless triv-by
+                  (! temp-pop-unboxed-word ptr-reg)
+                  (arm2-close-undo))
+                (with-imm-target () (result :address)
+                  (! fixnum-add result ptr-reg by-reg)
+                  (<- result))))))
         (^)))))
 
