Index: /trunk/ccl/compiler/PPC/ppc2.lisp
===================================================================
--- /trunk/ccl/compiler/PPC/ppc2.lisp	(revision 6257)
+++ /trunk/ccl/compiler/PPC/ppc2.lisp	(revision 6258)
@@ -1569,9 +1569,17 @@
             (ppc2-two-targeted-reg-forms seg array ($ ppc::temp0) new val-reg))
           (multiple-value-setq (src unscaled-i unscaled-j val-reg)
+            (if needs-memoization
+              (progn
+                (ppc2-four-untargeted-reg-forms seg
+                                                array ($ ppc::temp0)
+                                                i ($ ppc::arg_x)
+                                                j ($ ppc::arg_y)
+                                                new val-reg)
+                (values ($ ppc::temp0) ($ ppc::arg_x) ($ ppc::arg_y) ($ ppc::arg_z)))
             (ppc2-four-untargeted-reg-forms seg
                                             array ($ ppc::temp0)
                                             i ($ ppc::arg_x)
                                             j ($ ppc::arg_y)
-                                            new val-reg)))
+                                            new val-reg))))
         (when safe      
           (when (typep safe 'fixnum)
Index: /trunk/ccl/compiler/X86/x862.lisp
===================================================================
--- /trunk/ccl/compiler/X86/x862.lisp	(revision 6257)
+++ /trunk/ccl/compiler/X86/x862.lisp	(revision 6258)
@@ -1648,9 +1648,17 @@
             (x862-two-targeted-reg-forms seg array ($ x8664::temp0) new val-reg))
           (multiple-value-setq (src unscaled-i unscaled-j val-reg)
-            (x862-four-untargeted-reg-forms seg
-                                            array ($ x8664::temp0)
-                                            i ($ x8664::arg_x)
-                                            j ($ x8664::arg_y)
-                                            new val-reg)))
+            (if needs-memoization
+              (progn
+                (x862-four-targeted-reg-forms seg
+                                              array ($ x8664::temp0)
+                                              i ($ x8664::arg_x)
+                                              j ($ x8664::arg_y)
+                                              new val-reg)
+                (values ($ x8664::temp0) ($ x8664::arg_x) ($ x8664::arg_y) ($ x8664::arg_z)))
+              (x862-four-untargeted-reg-forms seg
+                                              array ($ x8664::temp0)
+                                              i ($ x8664::arg_x)
+                                              j ($ x8664::arg_y)
+                                              new val-reg))))
         (when safe      
           (when (typep safe 'fixnum)
