summaryrefslogtreecommitdiff
path: root/gcc/dce.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-04-30 14:35:22 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-04-30 14:35:22 +0000
commit35debead51c672d94e09901096032aded316a45c (patch)
treeb930499490b07e1c897cdfe8e6d50538aecc8f2b /gcc/dce.c
parentdf35c271df60646a09af5279506c76c676a83217 (diff)
downloadgcc-35debead51c672d94e09901096032aded316a45c.tar.gz
Makefile.in (dce.o): Add $(EXCEPT_H).
* Makefile.in (dce.o): Add $(EXCEPT_H). * dce.c: Include except.h and delete redundant vector definitions. (deletable_insn_p): Return false for non-call insns that can throw if DF is running. From-SVN: r147002
Diffstat (limited to 'gcc/dce.c')
-rw-r--r--gcc/dce.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/dce.c b/gcc/dce.c
index b37b505ffbd..abdd433cb0e 100644
--- a/gcc/dce.c
+++ b/gcc/dce.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "regs.h"
#include "hard-reg-set.h"
#include "flags.h"
+#include "except.h"
#include "df.h"
#include "cselib.h"
#include "dce.h"
@@ -35,9 +36,6 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h"
#include "tm_p.h"
-DEF_VEC_I(int);
-DEF_VEC_ALLOC_I(int,heap);
-
/* -------------------------------------------------------------------------
Core mark/delete routines
@@ -118,6 +116,10 @@ deletable_insn_p (rtx insn, bool fast, bitmap arg_stores)
if (!NONJUMP_INSN_P (insn))
return false;
+ /* Similarly, we cannot delete other insns that can throw either. */
+ if (df_in_progress && flag_non_call_exceptions && can_throw_internal (insn))
+ return false;
+
body = PATTERN (insn);
switch (GET_CODE (body))
{