diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-06-19 21:31:44 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-06-19 21:31:44 +0000 |
commit | 180720a5619f319261b28871eb6228063c3b1164 (patch) | |
tree | 4bcef14bccab086c4c16460e2ac9131431237b91 /gcc/tree-cfgcleanup.c | |
parent | f7e94dfb68d48b936044f7a631540e83b4a8b163 (diff) | |
download | gcc-180720a5619f319261b28871eb6228063c3b1164.zip gcc-180720a5619f319261b28871eb6228063c3b1164.tar.gz gcc-180720a5619f319261b28871eb6228063c3b1164.tar.bz2 |
tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at -O0 if the locus represent UNKNOWN_LOCATION but have...
* tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
-O0 if the locus represent UNKNOWN_LOCATION but have different values.
From-SVN: r261770
Diffstat (limited to 'gcc/tree-cfgcleanup.c')
-rw-r--r-- | gcc/tree-cfgcleanup.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index d5464fd..b27ba8a 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -346,8 +346,11 @@ tree_forwarder_block_p (basic_block bb, bool phi_wanted) if (e->src == ENTRY_BLOCK_PTR_FOR_FN (cfun) || (e->flags & EDGE_EH)) return false; /* If goto_locus of any of the edges differs, prevent removing - the forwarder block for -O0. */ - else if (optimize == 0 && e->goto_locus != locus) + the forwarder block when not optimizing. */ + else if (!optimize + && (LOCATION_LOCUS (e->goto_locus) != UNKNOWN_LOCATION + || LOCATION_LOCUS (locus) != UNKNOWN_LOCATION) + && e->goto_locus != locus) return false; } @@ -362,7 +365,10 @@ tree_forwarder_block_p (basic_block bb, bool phi_wanted) case GIMPLE_LABEL: if (DECL_NONLOCAL (gimple_label_label (as_a <glabel *> (stmt)))) return false; - if (optimize == 0 && gimple_location (stmt) != locus) + if (!optimize + && (gimple_has_location (stmt) + || LOCATION_LOCUS (locus) != UNKNOWN_LOCATION) + && gimple_location (stmt) != locus) return false; break; |