reload1.c (reload): Verify that addresses for reg_equiv_* are valid for the architecture.
authorEric Christopher <echristo@redhat.com>
Wed, 12 Nov 2003 07:24:25 +0000 (07:24 +0000)
committerEric Christopher <echristo@gcc.gnu.org>
Wed, 12 Nov 2003 07:24:25 +0000 (07:24 +0000)
2003-11-11  Eric Christopher  <echristo@redhat.com>

        * reload1.c (reload): Verify that addresses for
        reg_equiv_* are valid for the architecture.

From-SVN: r73487

gcc/ChangeLog
gcc/reload1.c

index f04aff9802a19643ca269a9b057a985eaae859e5..a749add7ee860a0f54d3e2bd944296cc0a9e5f10 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-11  Eric Christopher  <echristo@redhat.com>
+
+       * reload1.c (reload): Verify that addresses for
+       reg_equiv_* are valid for the architecture.
+
 2003-11-11  Eric Christopher  <echristo@redhat.com>
 
        * function.c (purge_addressof_1): Add libcall check.
index 717489f3216c216612261e94abf991282f0123df..7bfc142ba954ebe62f40a2d56a303233cf95cbf4 100644 (file)
@@ -774,6 +774,12 @@ reload (rtx first, int global)
                            = force_const_mem (GET_MODE (SET_DEST (set)), x);
                          if (!reg_equiv_memory_loc[i])
                            continue;
+                         /* As above. Later passes of reload assume that
+                            all addresses found in the reg_equiv_* arrays
+                            were originally legitimate.  */
+                         if (!memory_operand (reg_equiv_memory_loc[i], VOIDmode))
+                           reg_equiv_memory_loc[i] = NULL_RTX;
+
                        }
                    }
                  else