OSDN Git Service

(gen_input_reload): Handle PLUS with MEM operand
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Oct 1993 22:29:09 +0000 (22:29 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 1 Oct 1993 22:29:09 +0000 (22:29 +0000)
exactly the same as a PLUS with a REG operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5549 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/reload1.c

index c9992a8..72ec234 100644 (file)
@@ -6404,11 +6404,11 @@ gen_input_reload (reloadreg, in, opnum, type)
      register that didn't get a hard register.  In that case we can just
      call emit_move_insn.
 
-     We can also be asked to reload a PLUS that adds either two registers, or
-     a register and a constant or MEM, or a MEM and a constant.  This can
-     occur during frame pointer elimination and while reloading addresses.
-     This case is handled by trying to emit a single insn
-     to perform the add.  If it is not valid, we use a two insn sequence.
+     We can also be asked to reload a PLUS that adds a register or a MEM to
+     another register, constant or MEM.  This can occur during frame pointer
+     elimination and while reloading addresses.  This case is handled by
+     trying to emit a single insn to perform the add.  If it is not valid,
+     we use a two insn sequence.
 
      Finally, we could be called to handle an 'o' constraint by putting
      an address into a register.  In that case, we first try to do this
@@ -6426,16 +6426,14 @@ gen_input_reload (reloadreg, in, opnum, type)
      ??? At some point, this whole thing needs to be rethought.  */
 
   if (GET_CODE (in) == PLUS
-      && ((GET_CODE (XEXP (in, 0)) == REG
-          && (GET_CODE (XEXP (in, 1)) == REG
-              || CONSTANT_P (XEXP (in, 1))
-              || GET_CODE (XEXP (in, 1)) == MEM))
-         || (GET_CODE (XEXP (in, 0)) == MEM
-             && CONSTANT_P (XEXP (in, 1)))))
+      && (GET_CODE (XEXP (in, 0)) == REG
+         || GET_CODE (XEXP (in, 0)) == MEM)
+      && (GET_CODE (XEXP (in, 1)) == REG
+         || CONSTANT_P (XEXP (in, 1))
+         || GET_CODE (XEXP (in, 1)) == MEM))
     {
-      /* We need to compute the sum of what is either a register and a
-        constant, a register and memory, a hard register and a pseudo
-        register, or memory and a constant and put it into the reload
+      /* We need to compute the sum of a register or a MEM and another
+        register, constant, or MEM, and put it into the reload
         register.  The best possible way of doing this is if the machine
         has a three-operand ADD insn that accepts the required operands.