aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorDavid Li <davidxl@google.com>2011-06-09 16:09:23 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2011-06-09 16:09:23 +0000
commitbdf67bcba3ccc715da89128200d06140943f33b4 (patch)
tree4df88ba9bea41f8d545aabd4a90d1d88d969a1e6 /gcc/tree-eh.c
parent0d1d0dc8aa325982f4a07d79bce1a5b21e71d4ab (diff)
downloadgcc-bdf67bcba3ccc715da89128200d06140943f33b4.zip
gcc-bdf67bcba3ccc715da89128200d06140943f33b4.tar.gz
gcc-bdf67bcba3ccc715da89128200d06140943f33b4.tar.bz2
Gator cleanup
From-SVN: r174848
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r--gcc/tree-eh.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index e87c32e..7d27e0c 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -3234,6 +3234,9 @@ execute_lower_eh_dispatch (void)
bool any_rewritten = false;
bool redirected = false;
+ if (cfun->eh->region_tree == NULL)
+ return 0;
+
assign_filter_values ();
FOR_EACH_BB (bb)
@@ -3254,7 +3257,7 @@ execute_lower_eh_dispatch (void)
static bool
gate_lower_eh_dispatch (void)
{
- return cfun->eh->region_tree != NULL;
+ return true;
}
struct gimple_opt_pass pass_lower_eh_dispatch =
@@ -3983,8 +3986,12 @@ execute_cleanup_eh_1 (void)
static unsigned int
execute_cleanup_eh (void)
{
- int ret = execute_cleanup_eh_1 ();
+ int ret;
+ if (cfun->eh == NULL || cfun->eh->region_tree == NULL)
+ return 0;
+
+ ret = execute_cleanup_eh_1 ();
/* If the function no longer needs an EH personality routine
clear it. This exposes cross-language inlining opportunities
and avoids references to a never defined personality routine. */
@@ -3998,7 +4005,7 @@ execute_cleanup_eh (void)
static bool
gate_cleanup_eh (void)
{
- return cfun->eh != NULL && cfun->eh->region_tree != NULL;
+ return true;
}
struct gimple_opt_pass pass_cleanup_eh = {