diff options
author | Jeff Law <law@redhat.com> | 2013-11-15 14:11:50 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2013-11-15 14:11:50 -0700 |
commit | 6efe83b22e076ba8a2601ce0c31b8d4130d72704 (patch) | |
tree | 94fdd0bc7bfd3fe5085e85d1819ed803b207fc53 /gcc/gimple-ssa-isolate-paths.c | |
parent | f0d3309e9b5700f73d88c01193eb701a2f4ef985 (diff) | |
download | gcc-6efe83b22e076ba8a2601ce0c31b8d4130d72704.zip gcc-6efe83b22e076ba8a2601ce0c31b8d4130d72704.tar.gz gcc-6efe83b22e076ba8a2601ce0c31b8d4130d72704.tar.bz2 |
basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from has_abnormal_or_outgoing_edge.
* basic-block.h (has_abnormal_or_eh_outgoing_edge): Renamed from
has_abnormal_or_outgoing_edge. Check for EH edges as well.
* gimple-ssa-isolate-paths.c
(find_implicit_erroneous_behaviour): Corresponding changes.
Do not check stmt_ends_bb_p or GIMPLE_RETURN anymore.
(find_explicit_erroneous_behaviour): Likewise.
From-SVN: r204861
Diffstat (limited to 'gcc/gimple-ssa-isolate-paths.c')
-rw-r--r-- | gcc/gimple-ssa-isolate-paths.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c index 66c13f4..c42f112 100644 --- a/gcc/gimple-ssa-isolate-paths.c +++ b/gcc/gimple-ssa-isolate-paths.c @@ -224,7 +224,7 @@ find_implicit_erroneous_behaviour (void) the trap we insert. We have to preserve abnormal edges out of the isolated block which in turn means updating PHIs at the targets of those abnormal outgoing edges. */ - if (has_abnormal_outgoing_edge_p (bb)) + if (has_abnormal_or_eh_outgoing_edge_p (bb)) continue; /* First look for a PHI which sets a pointer to NULL and which @@ -268,15 +268,8 @@ find_implicit_erroneous_behaviour (void) { /* We only care about uses in BB. Catching cases in in other blocks would require more complex path - isolation code. - - If the statement must end a block and is not a - GIMPLE_RETURN, then additional work would be - necessary to isolate the path. Just punt it for - now. */ - if (gimple_bb (use_stmt) != bb - || (stmt_ends_bb_p (use_stmt) - && gimple_code (use_stmt) != GIMPLE_RETURN)) + isolation code. */ + if (gimple_bb (use_stmt) != bb) continue; if (infer_nonnull_range (use_stmt, lhs)) @@ -316,7 +309,7 @@ find_explicit_erroneous_behaviour (void) the trap we insert. We have to preserve abnormal edges out of the isolated block which in turn means updating PHIs at the targets of those abnormal outgoing edges. */ - if (has_abnormal_outgoing_edge_p (bb)) + if (has_abnormal_or_eh_outgoing_edge_p (bb)) continue; /* Now look at the statements in the block and see if any of @@ -329,8 +322,7 @@ find_explicit_erroneous_behaviour (void) /* By passing null_pointer_node, we can use infer_nonnull_range to detect explicit NULL pointer dereferences and other uses where a non-NULL value is required. */ - if ((!stmt_ends_bb_p (stmt) || gimple_code (stmt) == GIMPLE_RETURN) - && infer_nonnull_range (stmt, null_pointer_node)) + if (infer_nonnull_range (stmt, null_pointer_node)) { insert_trap_and_remove_trailing_statements (&si, null_pointer_node); |