Hi!
This removes gimple_debug stmts without block info after a NULL INLINE_ENTRY. The line numbers from these stmts are from the inline function, but since the inline function is completely optimized away, there will be no DW_TAG_inlined_subroutine so the debugger has no callstack available at this point, and therefore those line table entries are not helpful to the user. 2020-11-20 Bernd Edlinger <bernd.edlin...@hotmail.de> * cfgexpand.c (expand_gimple_basic_block): Remove debug_begin_stmts following a removed debug_inline_entry. Bootstrapped and reg-tested on x86_64-pc-linux-gnu. Is it OK for trunk? Thanks Bernd.
From 464867ca9b4cc6270fb6d41dc5346dc55395efb0 Mon Sep 17 00:00:00 2001 From: Bernd Edlinger <bernd.edlin...@hotmail.de> Date: Fri, 13 Nov 2020 16:26:28 +0100 Subject: [PATCH] Remove misleading debug line entries This removes gimple_debug stmts without block info after a NULL INLINE_ENTRY. The line numbers from these stmts are from the inline function, but since the inline function is completely optimized away, there will be no DW_TAG_inlined_subroutine so the debugger has no callstack available at this point, and therefore those line table entries are not helpful to the user. 2020-11-20 Bernd Edlinger <bernd.edlin...@hotmail.de> * cfgexpand.c (expand_gimple_basic_block): Remove debug_begin_stmts following a removed debug_inline_entry. --- gcc/cfgexpand.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 1df6f4b..6bd38ac 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -5785,6 +5785,7 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls) tree value = NULL_TREE; rtx val = NULL_RTX; machine_mode mode; + bool skip_inline_loc = false; if (!gimple_debug_nonbind_marker_p (stmt)) { @@ -5837,7 +5838,10 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls) if (block) val = GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT (); else - goto delink_debug_stmt; + { + skip_inline_loc = true; + goto delink_debug_stmt; + } } else gcc_unreachable (); @@ -5877,6 +5881,8 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls) stmt = gsi_stmt (nsi); if (!is_gimple_debug (stmt)) break; + if (skip_inline_loc && !gimple_block (stmt)) + goto delink_debug_stmt; } set_curr_insn_location (sloc); -- 1.9.1