gcse.c (hash_scan_set): An expression is not anticipatible if it is part of a multi...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Thu, 22 Mar 2001 00:21:16 +0000 (00:21 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 22 Mar 2001 00:21:16 +0000 (19:21 -0500)
* gcse.c (hash_scan_set): An expression is not anticipatible if it
is part of a multi-SET insn.

From-SVN: r40722

gcc/ChangeLog
gcc/gcse.c

index 15a3dc92ccabd995c5c9b5811f285d2bef3a7219..64cdf7bb72be021c58dadf6505e097446cb8798b 100644 (file)
@@ -1,5 +1,8 @@
 Wed Mar 21 14:27:11 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
+       * gcse.c (hash_scan_set): An expression is not anticipatible if it
+       is part of a multi-SET insn.
+
        * cse.c (find_comparison_args): Remove previous change.
        * ifcvt.c (noce_process_if_block): When moving an insn, remove any
        REG_EQUAL notes.
index 4b5403a8c3a35b01479e72b76325897535095b5f..cac80f9d4b947dd44822131de12d23bedb43508a 100644 (file)
@@ -1967,8 +1967,9 @@ hash_scan_set (pat, insn, set_p)
          && src != dest)
        {
          /* An expression is not anticipatable if its operands are
-            modified before this insn.  */
-         int antic_p = oprs_anticipatable_p (src, insn);
+            modified before this insn or if this is not the only SET in
+            this insn.  */
+         int antic_p = oprs_anticipatable_p (src, insn) && single_set (insn);
          /* An expression is not available if its operands are
             subsequently modified, including this insn.  */
          int avail_p = oprs_available_p (src, insn);