summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2002-10-01 12:19:36 +0000
committerAndrew Haley <aph@gcc.gnu.org>2002-10-01 12:19:36 +0000
commita646f6ccc1113db8d1faeb1a902b44c1c7774e8c (patch)
tree150e6abd5f8f691ae4cd7d2c2f60135ff3b9682d /gcc
parent3f7967e390a7cb0a06527a5ebf8a7f6a040b047b (diff)
downloadgcc-a646f6ccc1113db8d1faeb1a902b44c1c7774e8c.tar.gz
flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns that may trap.
2002-09-30 Andrew Haley <aph@redhat.com> * flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns that may trap. * cse.c (insn_live_p): Likewise. From-SVN: r57688
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cse.c4
-rw-r--r--gcc/flow.c4
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8325d029bda..64fa602f843 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2002-09-30 Andrew Haley <aph@redhat.com>
+
+ * flow.c (insn_dead_p): When using non-call-exceptions, don't
+ eliminate insns that may trap.
+ * cse.c (insn_live_p): Likewise.
+
2002-10-01 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.h (PROCESSOR_R4121): Rename to PROCESSOR_R4120.
diff --git a/gcc/cse.c b/gcc/cse.c
index 706fe80f4eb..29c771b93f6 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -7582,7 +7582,9 @@ insn_live_p (insn, counts)
int *counts;
{
int i;
- if (GET_CODE (PATTERN (insn)) == SET)
+ if (flag_non_call_exceptions && may_trap_p (insn))
+ return true;
+ else if (GET_CODE (PATTERN (insn)) == SET)
return set_live_p (PATTERN (insn), insn, counts);
else if (GET_CODE (PATTERN (insn)) == PARALLEL)
{
diff --git a/gcc/flow.c b/gcc/flow.c
index 2905917cbcc..d9e3ae3ce40 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -2110,6 +2110,10 @@ insn_dead_p (pbi, x, call_ok, notes)
{
enum rtx_code code = GET_CODE (x);
+ /* Don't eliminate insns that may trap. */
+ if (flag_non_call_exceptions && may_trap_p (x))
+ return 0;
+
#ifdef AUTO_INC_DEC
/* As flow is invoked after combine, we must take existing AUTO_INC
expressions into account. */