]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
reload1.c (gen_reload): When synthesizing a 3 operand add sequence...
authorFranz Sirl <Franz.Sirl-kernel@lauterbach.com>
Wed, 7 Jul 1999 01:05:39 +0000 (01:05 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 7 Jul 1999 01:05:39 +0000 (19:05 -0600)
        * reload1.c (gen_reload): When synthesizing a 3 operand add
        sequence, improve test for when to reload OP1 into the reload
        register instead of OP0.

From-SVN: r27988

gcc/ChangeLog
gcc/reload1.c

index 909b3431a0a87fd147637d7951c8dd9adaf1efbd..26cbf8bd728a28dbe6de2c3959c138aa58c9262f 100644 (file)
@@ -1,3 +1,9 @@
+Wed Jul  7 02:00:04 1999  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+
+       * reload1.c (gen_reload): When synthesizing a 3 operand add 
+       sequence, improve test for when to reload OP1 into the reload
+       register instead of OP0.
+
 Wed Jul  7 01:38:03 1999  Jim Wilson  <wilson@cygnus.com>
 
        * unroll.c (unroll_loop): Don't delete NOTE_INSN_DELETED_LABEL notes.
index f16ed109875142d92d8dc774b379fbd8065e52b0..0ec2a92483080c341407f3d67dde53fe5d58a861 100644 (file)
@@ -7819,9 +7819,13 @@ gen_reload (out, in, opnum, type)
         DEFINE_PEEPHOLE should be specified that recognizes the sequence
         we emit below.  */
 
+      code = (int) add_optab->handlers[(int) GET_MODE (out)].insn_code;
+
       if (CONSTANT_P (op1) || GET_CODE (op1) == MEM || GET_CODE (op1) == SUBREG
          || (GET_CODE (op1) == REG
-             && REGNO (op1) >= FIRST_PSEUDO_REGISTER))
+             && REGNO (op1) >= FIRST_PSEUDO_REGISTER)
+         || (code != CODE_FOR_nothing
+             && ! (*insn_operand_predicate[code][2]) (op1, insn_operand_mode[code][2])))
        tem = op0, op0 = op1, op1 = tem;
 
       gen_reload (out, op0, opnum, type);