unroll.c (find_splittable_givs): For a DEST_ADDR giv...
[gcc.git] / gcc / unroll.c
index d36fba5555cdf162131cfb1301e39d85041e25f1..501a6e51792e393ef1f00678ab8a92139c6d82c1 100644 (file)
@@ -2847,8 +2847,11 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment,
                          To share a register here, the values must be
                          equal.  */
                       && rtx_equal_p (v->same->mult_val, v->mult_val)
-                      && rtx_equal_p (v->same->add_val, v->add_val))
-
+                      && rtx_equal_p (v->same->add_val, v->add_val)
+                      /* If the memory references have different modes,
+                         then the address may not be valid and we must
+                         not share registers.  */
+                      && verify_addresses (v, giv_inc, unroll_number))
                {
                  v->dest_reg = v->same->dest_reg;
                  v->shared = 1;