* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
@ 2022-07-17 18:48 ` pinskia at gcc dot gnu.org
2022-07-18 8:26 ` rguenth at gcc dot gnu.org
` (11 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-07-17 18:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |13.0
Keywords| |ice-on-valid-code
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
2022-07-17 18:48 ` [Bug lto/106334] " pinskia at gcc dot gnu.org
@ 2022-07-18 8:26 ` rguenth at gcc dot gnu.org
2022-07-18 9:02 ` marxin at gcc dot gnu.org
` (10 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-07-18 8:26 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2022-07-18
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. Do we eventually ggc_free during stream-in?!
Breakpoint 5, dwarf2out_register_external_die (decl=<function_decl
0x7ffff66f0f00 listItems>, sym=0x42c6e98 "eval.cc.eec30469", off=478) at
/space/rguenther/src/gcc/gcc/dwarf2out.cc:6072
6072 gcc_checking_assert (!external_die_map->get (decl));
(gdb) p sym
$4 = 0x42c6e98 "eval.cc.eec30469"
(gdb) p off
$5 = 478
(gdb) c
Continuing.
Breakpoint 5, dwarf2out_register_external_die (decl=<function_decl
0x7ffff66f0f00 operator*>, sym=0x42c6e98 "eval.cc.eec30469", off=455) at
/space/rguenther/src/gcc/gcc/dwarf2out.cc:6072
6072 gcc_checking_assert (!external_die_map->get (decl));
(gdb) p sym
$6 = 0x42c6e98 "eval.cc.eec30469"
(gdb) p off
$7 = 455
so we have the "same" decl (address) but with different decls. Hmm.
#0 free_node (node=<ggc_freed 0x7ffff66f0f00>)
at /space/rguenther/src/gcc/gcc/tree.cc:1342
#1 0x0000000000b78e43 in unify_scc (data_in=0x42b3840, from=240, len=4,
scc_entry_len=1, scc_hash=852538354)
at /space/rguenther/src/gcc/gcc/lto/lto-common.cc:1769
#2 0x0000000000b79590 in lto_read_decls (decl_data=0x7ffff68cdc60,
data=0x42c66b0, resolutions=...)
at /space/rguenther/src/gcc/gcc/lto/lto-common.cc:1930
and
#0 dwarf2out_register_external_die (
decl=<function_decl 0x7ffff66f0f00 listItems>,
sym=0x42c6e98 "eval.cc.eec30469", off=478)
at /space/rguenther/src/gcc/gcc/dwarf2out.cc:6072
#1 0x00000000010ec851 in lto_input_tree (ib=0x7fffffffd770, data_in=0x42b3840)
at /space/rguenther/src/gcc/gcc/lto-streamer-in.cc:1911
#2 0x00000000010ec141 in lto_read_tree_1 (ib=0x7fffffffd770,
data_in=0x42b3840, expr=<type_decl 0x7ffff66ef7b8 ListIterable>)
at /space/rguenther/src/gcc/gcc/lto-streamer-in.cc:1706
#3 0x00000000010ec3ef in lto_input_scc (ib=0x7fffffffd770, data_in=0x42b3840,
len=0x7fffffffd72c, entry_len=0x7fffffffd728, shared_scc=true)
at /space/rguenther/src/gcc/gcc/lto-streamer-in.cc:1798
#4 0x0000000000b7945f in lto_read_decls (decl_data=0x7ffff68cdc60,
data=0x42c66b0, resolutions=...)
at /space/rguenther/src/gcc/gcc/lto/lto-common.cc:1904
note the dwarf2out registering during WPA is just using its hashtable as
temporary storage, overwriting an existing entry should be fine there.
An alternative would be to delay registering until we know the node is
needed or providing a hook to unregister entries when we do free_node.
The issue is probably latent everywhere - interesting that it didn't pop
up yet.
The "cheapest solution" is to short-cut the assert when flag_wpa (it's
off with release checking anyway).
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
2022-07-17 18:48 ` [Bug lto/106334] " pinskia at gcc dot gnu.org
2022-07-18 8:26 ` rguenth at gcc dot gnu.org
@ 2022-07-18 9:02 ` marxin at gcc dot gnu.org
2022-07-19 9:17 ` cvs-commit at gcc dot gnu.org
` (9 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: marxin at gcc dot gnu.org @ 2022-07-18 9:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
Btw. started with r12-6678-g254ada46ae0f21bd.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (2 preceding siblings ...)
2022-07-18 9:02 ` marxin at gcc dot gnu.org
@ 2022-07-19 9:17 ` cvs-commit at gcc dot gnu.org
2022-07-19 9:18 ` rguenth at gcc dot gnu.org
` (8 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-07-19 9:17 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:0f129766fdb687394f0eea04f69268b5cc034cda
commit r13-1742-g0f129766fdb687394f0eea04f69268b5cc034cda
Author: Richard Biener <rguenther@suse.de>
Date: Tue Jul 19 10:02:40 2022 +0200
lto/106334 - relax assert during WPA tree merging
The dwarf2out map of tree to symbol + offset is populated too early
when streaming in trees so that when WPA tree merging decides to
recycle them the mapping prevails and if we are unlucky the same
address is used for another tree with a symbol + offset DIE to
record. The following mitigates the resulting ICE by relaxing the
assert, allowing re-use of a slot during WPA. Delaying the register
would be better but it's already somewhat hairy and uglifying this
further doesn't look too important right now.
PR lto/106334
* dwarf2out.cc (dwarf2out_register_external_die): Allow
map entry re-use during WPA.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (3 preceding siblings ...)
2022-07-19 9:17 ` cvs-commit at gcc dot gnu.org
@ 2022-07-19 9:18 ` rguenth at gcc dot gnu.org
2022-07-31 7:36 ` slyfox at gcc dot gnu.org
` (7 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-07-19 9:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-checking
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed on trunk - not sure if worth backporting to release branches.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (4 preceding siblings ...)
2022-07-19 9:18 ` rguenth at gcc dot gnu.org
@ 2022-07-31 7:36 ` slyfox at gcc dot gnu.org
2022-08-01 8:05 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: slyfox at gcc dot gnu.org @ 2022-07-31 7:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Sergei Trofimovich <slyfox at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |NEW
Resolution|FIXED |---
--- Comment #5 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
I'll reopen this bug. I still see the crash in original example. I can make
#comment1 example crash by using `-flto-partition=none` in the link phase:
$ ./result/bin/g++ -O1 -flto -fPIC -g -I. -o eval-cache.o -c eval-cache.cc &&
./result/bin/g++ -O1 -flto -fPIC -g -I. -o eval.o -c eval.cc &&
./result/bin/g++ -O1 -flto -fPIC -g -I. -o libnixexpr.so -shared eval-cache.o
eval.o -flto-partition=none
lto1: internal compiler error: in dwarf2out_register_external_die, at
dwarf2out.cc:6076
0x1dc6714 diagnostic_impl(rich_location*, diagnostic_metadata const*, int, char
const*, __va_list_tag (*) [1], diagnostic_t)
???:0
0x1dc7366 internal_error(char const*, ...)
???:0
0x8b7012 fancy_abort(char const*, int, char const*)
???:0
0xa07036 dwarf2out_register_external_die(tree_node*, char const*, unsigned
long)
???:0
0x904efd lto_read_decls(lto_file_decl_data*, void const*,
vec<ld_plugin_symbol_resolution, va_heap, vl_ptr>)
???:0
0x905c6a read_cgraph_and_symbols(unsigned int, char const**)
???:0
0x8edc52 lto_main()
???:0
The compiler should already cpntain the fix:
$ ./result/bin/g++ -v | unnix
Using built-in specs.
COLLECT_GCC=/nix/store/w9kh67lghm1mq5gbcgg06d00d982cyj2-gcc-13.0.0/bin/g++
COLLECT_LTO_WRAPPER=/nix/store/w9kh67lghm1mq5gbcgg06d00d982cyj2-gcc-13.0.0/libexec/gcc/x86_64-unknown-linux-gnu/13.0.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with:
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.0.0 20220724 (experimental) (GCC)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (5 preceding siblings ...)
2022-07-31 7:36 ` slyfox at gcc dot gnu.org
@ 2022-08-01 8:05 ` rguenth at gcc dot gnu.org
2022-08-02 6:35 ` cvs-commit at gcc dot gnu.org
` (5 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-08-01 8:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Sergei Trofimovich from comment #5)
> I'll reopen this bug. I still see the crash in original example. I can make
> #comment1 example crash by using `-flto-partition=none` in the link phase:
Meh. OK, so change the guard to !(in_lto_p && !flag_wpa) || ...
Stupid -flto-partition=none ...
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (6 preceding siblings ...)
2022-08-01 8:05 ` rguenth at gcc dot gnu.org
@ 2022-08-02 6:35 ` cvs-commit at gcc dot gnu.org
2022-08-02 6:36 ` rguenth at gcc dot gnu.org
` (4 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-08-02 6:35 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:bc7526f6fca0e6ac3bd462ae54170fa464539148
commit r13-1925-gbc7526f6fca0e6ac3bd462ae54170fa464539148
Author: Richard Biener <rguenther@suse.de>
Date: Mon Aug 1 10:06:49 2022 +0200
lto/106334 - fix previous fix wrt -flto-partition=none
This adjusts the assert guard to include -flto-partition=none which
behaves as WPA.
PR lto/106334
* dwarf2out.cc (dwarf2out_register_external_die): Adjust
assert.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (7 preceding siblings ...)
2022-08-02 6:35 ` cvs-commit at gcc dot gnu.org
@ 2022-08-02 6:36 ` rguenth at gcc dot gnu.org
2022-08-08 9:13 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-08-02 6:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed again.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (8 preceding siblings ...)
2022-08-02 6:36 ` rguenth at gcc dot gnu.org
@ 2022-08-08 9:13 ` cvs-commit at gcc dot gnu.org
2022-08-10 14:30 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-08-08 9:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:2a1448f2763a72c83e2ec496f78243a975b0d44e
commit r13-1987-g2a1448f2763a72c83e2ec496f78243a975b0d44e
Author: Richard Biener <rguenther@suse.de>
Date: Mon Aug 8 09:07:23 2022 +0200
lto/106540 - fix LTO tree input wrt dwarf2out_register_external_die
I've revisited the earlier two workarounds for
dwarf2out_register_external_die
getting duplicate entries. It turns out that r11-525-g03d90a20a1afcb
added dref_queue pruning to lto_input_tree but decl reading uses that
to stream in DECL_INITIAL even when in the middle of SCC streaming.
When that SCC then gets thrown away we can end up with debug nodes
registered which isn't supposed to happen. The following adjusts
the DECL_INITIAL streaming to go the in-SCC way, using lto_input_tree_1,
since no SCCs are expected at this point, just refs.
PR lto/106540
PR lto/106334
* dwarf2out.cc (dwarf2out_register_external_die): Restore
original assert.
* lto-streamer-in.cc (lto_read_tree_1): Use lto_input_tree_1
to input DECL_INITIAL, avoiding to commit drefs.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (9 preceding siblings ...)
2022-08-08 9:13 ` cvs-commit at gcc dot gnu.org
@ 2022-08-10 14:30 ` cvs-commit at gcc dot gnu.org
2022-10-11 13:04 ` cvs-commit at gcc dot gnu.org
2022-10-14 10:47 ` cvs-commit at gcc dot gnu.org
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-08-10 14:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:4769ac6c5dfde2810a0266fe388211edc644e623
commit r12-8676-g4769ac6c5dfde2810a0266fe388211edc644e623
Author: Richard Biener <rguenther@suse.de>
Date: Mon Aug 8 09:07:23 2022 +0200
lto/106540 - fix LTO tree input wrt dwarf2out_register_external_die
I've revisited the earlier two workarounds for
dwarf2out_register_external_die
getting duplicate entries. It turns out that r11-525-g03d90a20a1afcb
added dref_queue pruning to lto_input_tree but decl reading uses that
to stream in DECL_INITIAL even when in the middle of SCC streaming.
When that SCC then gets thrown away we can end up with debug nodes
registered which isn't supposed to happen. The following adjusts
the DECL_INITIAL streaming to go the in-SCC way, using lto_input_tree_1,
since no SCCs are expected at this point, just refs.
PR lto/106540
PR lto/106334
* lto-streamer-in.cc (lto_read_tree_1): Use lto_input_tree_1
to input DECL_INITIAL, avoiding to commit drefs.
(cherry picked from commit 2a1448f2763a72c83e2ec496f78243a975b0d44e)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (10 preceding siblings ...)
2022-08-10 14:30 ` cvs-commit at gcc dot gnu.org
@ 2022-10-11 13:04 ` cvs-commit at gcc dot gnu.org
2022-10-14 10:47 ` cvs-commit at gcc dot gnu.org
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-10-11 13:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:752d7664325037789ee4b634672e8e737ad9469c
commit r11-10307-g752d7664325037789ee4b634672e8e737ad9469c
Author: Richard Biener <rguenther@suse.de>
Date: Mon Aug 8 09:07:23 2022 +0200
lto/106540 - fix LTO tree input wrt dwarf2out_register_external_die
I've revisited the earlier two workarounds for
dwarf2out_register_external_die
getting duplicate entries. It turns out that r11-525-g03d90a20a1afcb
added dref_queue pruning to lto_input_tree but decl reading uses that
to stream in DECL_INITIAL even when in the middle of SCC streaming.
When that SCC then gets thrown away we can end up with debug nodes
registered which isn't supposed to happen. The following adjusts
the DECL_INITIAL streaming to go the in-SCC way, using lto_input_tree_1,
since no SCCs are expected at this point, just refs.
PR lto/106540
PR lto/106334
* lto-streamer-in.c (lto_read_tree_1): Use lto_input_tree_1
to input DECL_INITIAL, avoiding to commit drefs.
(cherry picked from commit 4769ac6c5dfde2810a0266fe388211edc644e623)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug lto/106334] [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072
2022-07-17 17:34 [Bug lto/106334] New: [13 Regression] lto -g ICE in dwarf2out_register_external_die at dwarf2out.cc:6072 slyfox at gcc dot gnu.org
` (11 preceding siblings ...)
2022-10-11 13:04 ` cvs-commit at gcc dot gnu.org
@ 2022-10-14 10:47 ` cvs-commit at gcc dot gnu.org
12 siblings, 0 replies; 14+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-10-14 10:47 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106334
--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Richard Biener
<rguenth@gcc.gnu.org>:
https://gcc.gnu.org/g:d2fa5521282cc7b5510e1e2c431a56d12693d74f
commit r10-11039-gd2fa5521282cc7b5510e1e2c431a56d12693d74f
Author: Richard Biener <rguenther@suse.de>
Date: Mon Aug 8 09:07:23 2022 +0200
lto/106540 - fix LTO tree input wrt dwarf2out_register_external_die
I've revisited the earlier two workarounds for
dwarf2out_register_external_die
getting duplicate entries. It turns out that r11-525-g03d90a20a1afcb
added dref_queue pruning to lto_input_tree but decl reading uses that
to stream in DECL_INITIAL even when in the middle of SCC streaming.
When that SCC then gets thrown away we can end up with debug nodes
registered which isn't supposed to happen. The following adjusts
the DECL_INITIAL streaming to go the in-SCC way, using lto_input_tree_1,
since no SCCs are expected at this point, just refs.
PR lto/106540
PR lto/106334
* lto-streamer-in.c (lto_read_tree_1): Use lto_input_tree_1
to input DECL_INITIAL, avoiding to commit drefs.
(cherry picked from commit 4769ac6c5dfde2810a0266fe388211edc644e623)
^ permalink raw reply [flat|nested] 14+ messages in thread