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
This commit is contained in:
Eric Botcazou 2018-06-19 21:31:44 +00:00 committed by Eric Botcazou
parent f7e94dfb68
commit 180720a561
2 changed files with 14 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
* tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
-O0 if the locus represent UNKNOWN_LOCATION but have different values.
2018-06-19 Aaron Sawdey <acsawdey@linux.ibm.com>
* config/rs6000/rs6000-string.c (select_block_compare_mode): Check

View file

@ -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;