aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-03-22 00:21:16 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-03-21 19:21:16 -0500
commit52d76e11287d0e4c7d9464cc4a5d4462da1425d2 (patch)
tree2c8de38ef1f3ec85d70197aaf4baca42e8d7512f
parent64ec27c320c1971437ac292d108f62e42f4efec7 (diff)
downloadgcc-52d76e11287d0e4c7d9464cc4a5d4462da1425d2.zip
gcc-52d76e11287d0e4c7d9464cc4a5d4462da1425d2.tar.gz
gcc-52d76e11287d0e4c7d9464cc4a5d4462da1425d2.tar.bz2
gcse.c (hash_scan_set): An expression is not anticipatible if it is part of a multi-SET insn.
* gcse.c (hash_scan_set): An expression is not anticipatible if it is part of a multi-SET insn. From-SVN: r40722
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/gcse.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 15a3dc9..64cdf7b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 4b5403a..cac80f9 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -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);