* config/c4x/c4x.h (LEGITIMIZE_RELOAD_ADDRESS): Handle symref.
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>
Sun, 25 Jan 2004 23:58:39 +0000 (23:58 +0000)
committerMichael Hayes <m.hayes@gcc.gnu.org>
Sun, 25 Jan 2004 23:58:39 +0000 (23:58 +0000)
From-SVN: r76598

gcc/ChangeLog
gcc/config/c4x/c4x.h

index 4b6de596f5c3e8ebe6498fa43df7e8b14a2cdfe8..186bdb985b285d32780613c95620836584ec4170 100644 (file)
@@ -1,3 +1,7 @@
+2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+        * config/c4x/c4x.h (LEGITIMIZE_RELOAD_ADDRESS):  Handle symref.
 2003-04-25  Chris Demetriou  <cgd@broadcom.com>
 
        * config/mips/mips.h (ISA_HAS_HILO_INTERLOCKS): MIPS32, MIPS32r2,
index 37d0c9b42dd471fb0e1d214f5ffcd4a82eda2bfd..ca82dd8121681503a6fde520bfaa5815f565dfe6 100644 (file)
@@ -1305,7 +1305,7 @@ CUMULATIVE_ARGS;
       if (! TARGET_SMALL)                                              \
        {                                                               \
           int i;                                                       \
-         X = gen_rtx_LO_SUM (GET_MODE (X),                             \
+         (X) = gen_rtx_LO_SUM (GET_MODE (X),                           \
                              gen_rtx_HIGH (GET_MODE (X), X), X);       \
           i = push_reload (XEXP (X, 0), NULL_RTX,                      \
                           &XEXP (X, 0), NULL,                          \
@@ -1316,6 +1316,12 @@ CUMULATIVE_ARGS;
           rld[i].reg_rtx = gen_rtx_REG (Pmode, DP_REGNO);              \
           rld[i].nocombine = 1;                                        \
         }                                                              \
+      else                                                             \
+        {                                                              \
+          /* make_memloc in reload will substitute invalid memory       \
+             references.  We need to fix them up.  */                   \
+          (X) = gen_rtx_LO_SUM (Pmode, gen_rtx_REG (Pmode, DP_REGNO), (X)); \
+        }                                                              \
       goto WIN;                                                                \
    }                                                                   \
   else if (MODE != HImode                                              \