summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-12 19:06:05 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-12 19:06:05 +0000
commit8403001eb9f3b54aa6c375d98ceb8d30c5cd0cf9 (patch)
treedd696bf575c93971cc1dc5e9a20aea0864816d0a
parentd9bce34f52360a4455e4ef3796daa5dc5c65ff61 (diff)
downloadppe42-gcc-8403001eb9f3b54aa6c375d98ceb8d30c5cd0cf9.tar.gz
ppe42-gcc-8403001eb9f3b54aa6c375d98ceb8d30c5cd0cf9.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36373 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ifcvt.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1520949961e..19e9f543a51 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-09-12 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <greg@mcgary.org>
* config/mips/mips-protos.h
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 901bd42b483..3ca0e6ccc65 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;
}
OpenPOWER on IntegriCloud