This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH][2/n] Make _INLINE_ENTRY markers have the location we finally need
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: aoliva at redhat dot com
- Date: Fri, 28 Sep 2018 11:03:06 +0200 (CEST)
- Subject: [PATCH][2/n] Make _INLINE_ENTRY markers have the location we finally need
The following patch makes the inliner assign the decl location of the
function we inline to the inline-entry marker which is what we later
need when processing line info. This avoids the need to keep the
actual FUNCTION_DECL live until that point. It avoids streaming it
to LTO and allows us to simply stick a reference to an early created
DIE in BLOCK_ABSTRACT_ORIGIN, which is why it is in this series.
Alex - any particular reason for not doing this?
Bootstrap & regtest running on x86_64-unknown-linux-gnu (but I do not
expect testsuite coverage for this...)
Richard.
2018-09-28 Richard Biener <rguenther@suse.de>
* tree-inline.c (expand_call_inline): Use the location of
the callee declaration for the inline-entry marker.
* final.c (notice_source_line): Remove special-casing of
NOTE_INSN_INLINE_ENTRY.
Index: gcc/tree-inline.c
===================================================================
--- gcc/tree-inline.c (revision 264686)
+++ gcc/tree-inline.c (working copy)
@@ -4592,7 +4592,8 @@ expand_call_inline (basic_block bb, gimp
{
gimple_stmt_iterator si = gsi_last_bb (bb);
gsi_insert_after (&si, gimple_build_debug_inline_entry
- (id->block, input_location), GSI_NEW_STMT);
+ (id->block, DECL_SOURCE_LOCATION (id->src_fn)),
+ GSI_NEW_STMT);
}
if (DECL_INITIAL (fn))
Index: gcc/final.c
===================================================================
--- gcc/final.c (revision 264686)
+++ gcc/final.c (working copy)
@@ -3224,17 +3224,6 @@ notice_source_line (rtx_insn *insn, bool
if (NOTE_MARKER_P (insn))
{
location_t loc = NOTE_MARKER_LOCATION (insn);
- /* The inline entry markers (gimple, insn, note) carry the
- location of the call, because that's what we want to carry
- during compilation, but the location we want to output in
- debug information for the inline entry point is the location
- of the function itself. */
- if (NOTE_KIND (insn) == NOTE_INSN_INLINE_ENTRY)
- {
- tree block = LOCATION_BLOCK (loc);
- tree fn = block_ultimate_origin (block);
- loc = DECL_SOURCE_LOCATION (fn);
- }
expanded_location xloc = expand_location (loc);
if (xloc.line == 0)
{