[Bug bootstrap/79255] [6/7 Regression] PGO bootstrap fails on x86_64/ppc64le building Ada
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 23 16:36:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79255
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, what I see is:
#0 add_AT_unsigned (die=0x7fffedd374b0, attr_kind=DW_AT_inline,
unsigned_val=2) at ../../gcc/dwarf2out.c:4150
#1 0x0000000000ea5d65 in gen_subprogram_die (decl=0x7fffee138600,
context_die=0x0) at ../../gcc/dwarf2out.c:22117
#2 0x0000000000eaf43e in gen_decl_die (decl=0x7fffee138600, origin=0x0,
ctx=0x0, context_die=0x0) at ../../gcc/dwarf2out.c:25284
#3 0x0000000000eb08d5 in dwarf2out_decl (decl=0x7fffee138600) at
../../gcc/dwarf2out.c:25793
#4 0x0000000000ea4d08 in dwarf2out_abstract_function (decl=0x7fffee138600) at
../../gcc/dwarf2out.c:21656
#5 0x0000000000eaf248 in gen_decl_die (decl=0x0, origin=0x7fffee138600,
ctx=0x0, context_die=0x7fffecb246e0) at ../../gcc/dwarf2out.c:25241
#6 0x0000000000eadd68 in process_scope_var (stmt=0x7fffeddf3480, decl=0x0,
origin=0x7fffee138600, context_die=0x7fffecb246e0)
at ../../gcc/dwarf2out.c:24833
#7 0x0000000000eadec7 in decls_for_scope (stmt=0x7fffeddf3480,
context_die=0x7fffecb246e0) at ../../gcc/dwarf2out.c:24865
#8 0x0000000000ea9212 in gen_lexical_block_die (stmt=0x7fffeddf3480,
context_die=0x7fffecb245a0) at ../../gcc/dwarf2out.c:23207
#9 0x0000000000eada71 in gen_block_die (stmt=0x7fffeddf3480,
context_die=0x7fffecb245a0) at ../../gcc/dwarf2out.c:24795
#10 0x0000000000eadf13 in decls_for_scope (stmt=0x7fffeddf33c0,
context_die=0x7fffecb245a0) at ../../gcc/dwarf2out.c:24876
#11 0x0000000000ea93b7 in gen_inlined_subroutine_die (stmt=0x7fffeddf33c0,
context_die=0x7fffedd34000) at ../../gcc/dwarf2out.c:23245
#12 0x0000000000eada5c in gen_block_die (stmt=0x7fffeddf33c0,
context_die=0x7fffedd34000) at ../../gcc/dwarf2out.c:24792
#13 0x0000000000eadf13 in decls_for_scope (stmt=0x7fffee11cf00,
context_die=0x7fffedd34000) at ../../gcc/dwarf2out.c:24876
#14 0x0000000000eada86 in gen_block_die (stmt=0x7fffee11cf00,
context_die=0x7fffedd34000) at ../../gcc/dwarf2out.c:24798
#15 0x0000000000eadf13 in decls_for_scope (stmt=0x7fffee11ce40,
context_die=0x7fffedd34000) at ../../gcc/dwarf2out.c:24876
#16 0x0000000000ea6b1a in gen_subprogram_die (decl=0x7fffee2f8600,
context_die=0x7fffefcf3000) at ../../gcc/dwarf2out.c:22441
#17 0x0000000000eaf43e in gen_decl_die (decl=0x7fffee2f8600, origin=0x0,
ctx=0x0, context_die=0x7fffefcf3000) at ../../gcc/dwarf2out.c:25284
#18 0x0000000000eb08d5 in dwarf2out_decl (decl=0x7fffee2f8600) at
../../gcc/dwarf2out.c:25793
#19 0x0000000000eb0934 in dwarf2out_function_decl (decl=0x7fffee2f8600) at
../../gcc/dwarf2out.c:25808
#20 0x0000000000f401e7 in rest_of_handle_final () at ../../gcc/final.c:4520
It doesn't seem to me that
exp_ch5__expand_assign_with_target_names__replace_target_name
(the innermost decl) is actually inlined, the reason it is
dwarf2out_abstract_function is that it is present in some other inline
function's BLOCK_NONLOCALIZED_VARS and for those we do:
if (! early_dwarf)
for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i),
context_die);
I wonder if we shouldn't do:
--- gcc/dwarf2out.c.jj 2017-03-22 17:51:56.000000000 +0100
+++ gcc/dwarf2out.c 2017-03-23 17:31:45.225862154 +0100
@@ -24861,8 +24861,13 @@ decls_for_scope (tree stmt, dw_die_ref c
if we've done it once already. */
if (! early_dwarf)
for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
- process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i),
- context_die);
+ {
+ decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ process_scope_var (stmt, decl, NULL_TREE, context_die);
+ else
+ process_scope_var (stmt, NULL_TREE, decl, context_die);
+ }
}
/* Even if we're at -g1, we need to process the subblocks in order to get
which fixes the ICE, because then we really abstract only actually inlined
functions (those appearing in BLOCK_ABSTRACT_ORIGIN).
More information about the Gcc-bugs
mailing list