]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(can_combine_p): Don't check for replacing arg of function here.
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 5 Jul 1994 23:12:04 +0000 (19:12 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 5 Jul 1994 23:12:04 +0000 (19:12 -0400)
(can_combine_p): Do it here.

From-SVN: r7657

gcc/combine.c

index 0cd1ee879aebbabd1425706384fd3268c77d7109..9e929edad80734b4a83106591544bdb20b6c76a3 100644 (file)
@@ -878,6 +878,8 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
       || (rtx_equal_p (src, dest) && find_reg_note (insn, REG_EQUAL, NULL_RTX))
       /* Can't merge a function call.  */
       || GET_CODE (src) == CALL
+      /* Don't eliminate a function call argument.  */
+      || (GET_CODE (i3) == CALL_INSN && find_reg_fusage (i3, USE, dest))
       /* Don't substitute into an incremented register.  */
       || FIND_REG_INC_NOTE (i3, dest)
       || (succ && FIND_REG_INC_NOTE (succ, dest))
@@ -1218,17 +1220,6 @@ try_combine (i3, i2, i1)
       || find_reg_note (i3, REG_LIBCALL, NULL_RTX))
     return 0;
 
-  /* If I1 or I2 is an argument set insn, and I3 is the actual
-     CALL_INSN using it as argument, never combine the two.
-     This to prevent the elimination of insns that setup a
-     parameter register for a CALL_INSN.  */
-  if (GET_CODE (i3) == CALL_INSN
-      && (((temp = single_set (i2))
-            && find_reg_fusage (i3, USE, SET_DEST (temp)))
-         || (i1 && (temp = single_set (i1))
-              && find_reg_fusage (i3, USE, SET_DEST (temp)))))
-    return 0;
-
   combine_attempts++;
 
   undobuf.num_undo = previous_num_undos = 0;