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 + + * gcse.c (hash_scan_set): Expressions that are set as part of + jump instructions are not available. + 2001-08-13 Ulrich Weigand * 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); }