From: Jim Wilson Date: Tue, 12 Sep 2000 19:06:05 +0000 (+0000) Subject: Fix ia64-linux glibc intl/loadmsgcat.c miscompilation. X-Git-Tag: prereleases/libstdc++-2.92~4058 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc2999aaf6d6661c2ffa3443b84c0d665f2a1d04;p=thirdparty%2Fgcc.git Fix ia64-linux glibc intl/loadmsgcat.c miscompilation. * ifcvt.c (noce_process_if_block): If A and B are the same, and no else block, and X has side-effects, then fail. From-SVN: r36373 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1520949961e2..19e9f543a513 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-09-12 Jim Wilson + + * ifcvt.c (noce_process_if_block): If A and B are the same, and no + else block, and X has side-effects, then fail. + 2000-09-12 Greg McGary * config/mips/mips-protos.h diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 901bd42b483d..3ca0e6ccc651 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -1247,6 +1247,11 @@ noce_process_if_block (test_bb, then_bb, else_bb, join_bb) reorder_insns (insn_b, insn_b, PREV_INSN (if_info.cond_earliest)); insn_b = NULL_RTX; } + /* If we have "x = b; if (...) x = a;", and x has side-effects, then + x must be executed twice. */ + else if (insn_b && side_effects_p (orig_x)) + return FALSE; + x = orig_x; goto success; }