Commit 6491dbbb by Richard Kenner

(reload): Use reg_equiv_address for invalid addresses

of the form (mem (reg)).

From-SVN: r4761
parent 73ebbfdf
...@@ -819,7 +819,8 @@ reload (first, global, dumpfile) ...@@ -819,7 +819,8 @@ reload (first, global, dumpfile)
and constant, it is probably not addressable because the constant is and constant, it is probably not addressable because the constant is
out of range, in that case record the address; we will generate out of range, in that case record the address; we will generate
hairy code to compute the address in a register each time it is hairy code to compute the address in a register each time it is
needed. needed. Similarly if it is a hard register, but one that is not
valid as an address register.
If the location is not addressable, but does not have one of the If the location is not addressable, but does not have one of the
above forms, assign a stack slot. We have to do this to avoid the above forms, assign a stack slot. We have to do this to avoid the
...@@ -839,6 +840,8 @@ reload (first, global, dumpfile) ...@@ -839,6 +840,8 @@ reload (first, global, dumpfile)
XEXP (x, 0))) XEXP (x, 0)))
reg_equiv_mem[i] = x, reg_equiv_address[i] = 0; reg_equiv_mem[i] = x, reg_equiv_address[i] = 0;
else if (CONSTANT_P (XEXP (x, 0)) else if (CONSTANT_P (XEXP (x, 0))
|| (GET_CODE (XEXP (x, 0)) == REG
&& REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER)
|| (GET_CODE (XEXP (x, 0)) == PLUS || (GET_CODE (XEXP (x, 0)) == PLUS
&& GET_CODE (XEXP (XEXP (x, 0), 0)) == REG && GET_CODE (XEXP (XEXP (x, 0), 0)) == REG
&& (REGNO (XEXP (XEXP (x, 0), 0)) && (REGNO (XEXP (XEXP (x, 0), 0))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment