summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-13 21:42:10 +0000
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-13 21:42:10 +0000
commitf441a382c0850fad2aa7162af4ce31cd10b77487 (patch)
tree67db55b577664933343452abfc88f580be673b9e /gcc
parent65d9cb02b5883451d236b2e5c5ab33090bb06d6b (diff)
downloadgcc-f441a382c0850fad2aa7162af4ce31cd10b77487.tar.gz
* gcse.c (hash_scan_set): Expressions that are set as part of
jump instructions are not available. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44872 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gcse.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20017ca5510..80ab091ed0a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-08-13 Geoffrey Keating <geoffk@redhat.com>
+
+ * gcse.c (hash_scan_set): Expressions that are set as part of
+ jump instructions are not available.
+
2001-08-13 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.c (print_operand, s390_function_prologue,
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 0c1bc3c835a..8164ee3e2c1 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -2191,8 +2191,11 @@ hash_scan_set (pat, insn, set_p)
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);
+ subsequently modified, including this insn. It's also not
+ available if this is a branch, because we can't insert
+ a set after the branch. */
+ int avail_p = (oprs_available_p (src, insn)
+ && ! JUMP_P (insn));
insert_expr_in_table (src, GET_MODE (dest), insn, antic_p, avail_p);
}