aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-pretty-print.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-pretty-print.c')
-rw-r--r--gcc/tree-pretty-print.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 7ec4223..77446c5 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -3365,6 +3365,25 @@ percent_K_format (text_info *text)
gcc_assert (pp_ti_abstract_origin (text) != NULL);
block = TREE_BLOCK (t);
*pp_ti_abstract_origin (text) = NULL;
+
+ if (in_lto_p)
+ {
+ /* ??? LTO drops all BLOCK_ABSTRACT_ORIGINs apart from those
+ representing the outermost block of an inlined function.
+ So walk the BLOCK tree until we hit such a scope. */
+ while (block
+ && TREE_CODE (block) == BLOCK)
+ {
+ if (inlined_function_outer_scope_p (block))
+ {
+ *pp_ti_abstract_origin (text) = block;
+ break;
+ }
+ block = BLOCK_SUPERCONTEXT (block);
+ }
+ return;
+ }
+
while (block
&& TREE_CODE (block) == BLOCK
&& BLOCK_ABSTRACT_ORIGIN (block))