diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a3e38697f67c9..994340a8b6fae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-02-27 Alexandre Oliva + + * tree-ssa-live.c (remove_unused_scope_block_p): Do not + preserve inline entry blocks for the sake of debug inline + entry point markers alone. + (remove_unused_locals): Suggest in comments a better place to + force the preservation of inline entry blocks that are + otherwise unused, but do not preserve them. + 2018-02-26 H.J. Lu * config/i386/i386.c (ix86_output_indirect_jmp): Update comments. diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 62bb3c5de6594..62316bac79295 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -520,11 +520,6 @@ remove_unused_scope_block_p (tree scope, bool in_ctor_dtor_block) else if (!BLOCK_SUPERCONTEXT (scope) || TREE_CODE (BLOCK_SUPERCONTEXT (scope)) == FUNCTION_DECL) unused = false; - /* Preserve the block, it is referenced by at least the inline - entry point marker. */ - else if (debug_inline_points - && inlined_function_outer_scope_p (scope)) - unused = false; /* Innermost blocks with no live variables nor statements can be always eliminated. */ else if (!nsubblocks) @@ -556,10 +551,8 @@ remove_unused_scope_block_p (tree scope, bool in_ctor_dtor_block) /* See if this block is important for representation of inlined function. Inlined functions are always represented by block with block_ultimate_origin being set to FUNCTION_DECL and - DECL_SOURCE_LOCATION set, unless they expand to nothing... But - see above for the case of statement frontiers. */ - else if (!debug_inline_points - && inlined_function_outer_scope_p (scope)) + DECL_SOURCE_LOCATION set, unless they expand to nothing... */ + else if (inlined_function_outer_scope_p (scope)) unused = false; else /* Verfify that only blocks with source location set @@ -741,6 +734,10 @@ remove_unused_locals (void) gimple *stmt = gsi_stmt (gsi); tree b = gimple_block (stmt); + /* If we wanted to mark the block referenced by the inline + entry point marker as used, this would be a good spot to + do it. If the block is not otherwise used, the stmt will + be cleaned up in clean_unused_block_pointer. */ if (is_gimple_debug (stmt)) continue;