Bug 113519 - [14 regression] ICE: in replace_child, at dwarf2out.cc:5704 with -g -fdebug-types-section -fsso-struct
Summary: [14 regression] ICE: in replace_child, at dwarf2out.cc:5704 with -g -fdebug-...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: debug (show other bugs)
Version: 14.0
: P1 normal
Target Milestone: 14.0
Assignee: Eric Botcazou
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2024-01-20 06:14 UTC by Zdenek Sojka
Modified: 2024-03-11 08:31 UTC (History)
3 users (show)

See Also:
Host: x86_64-pc-linux-gnu
Target: x86_64-pc-linux-gnu
Build:
Known to work: 13.2.1
Known to fail: 14.0
Last reconfirmed: 2024-02-08 00:00:00


Attachments
reduced testcase (44 bytes, text/plain)
2024-01-20 06:14 UTC, Zdenek Sojka
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Zdenek Sojka 2024-01-20 06:14:32 UTC
Created attachment 57171 [details]
reduced testcase

Compiler output:
$ riscv64-unknown-linux-gnu-gcc -g -mbig-endian -fsso-struct=little-endian -fdebug-types-section testcase.c 
testcase.c:4:1: internal compiler error: in replace_child, at dwarf2out.cc:5704
    4 | } s;
      | ^
0xa15089 replace_child
        /repo/gcc-trunk/gcc/dwarf2out.cc:5704
0x123fd37 remove_child_or_replace_with_skeleton
        /repo/gcc-trunk/gcc/dwarf2out.cc:8625
0x123fd37 break_out_comdat_types
        /repo/gcc-trunk/gcc/dwarf2out.cc:8772
0x126da3d dwarf2out_early_finish
        /repo/gcc-trunk/gcc/dwarf2out.cc:33096
0x11cb11f symbol_table::finalize_compilation_unit()
        /repo/gcc-trunk/gcc/cgraphunit.cc:2579
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

$ riscv64-unknown-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-riscv64/bin/riscv64-unknown-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r14-8284-20240119180625-g54519030b05-checking-yes-rtl-df-extra-riscv64/bin/../libexec/gcc/riscv64-unknown-linux-gnu/14.0.1/lto-wrapper
Target: riscv64-unknown-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++ --enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra --with-cloog --with-ppl --with-isl --with-isa-spec=2.2 --with-sysroot=/usr/riscv64-unknown-linux-gnu --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=riscv64-unknown-linux-gnu --with-ld=/usr/bin/riscv64-unknown-linux-gnu-ld --with-as=/usr/bin/riscv64-unknown-linux-gnu-as --disable-multilib --disable-libstdcxx-pch --prefix=/repo/gcc-trunk//binary-trunk-r14-8284-20240119180625-g54519030b05-checking-yes-rtl-df-extra-riscv64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.0.1 20240119 (experimental) (GCC)
Comment 1 Andrew Pinski 2024-01-20 06:19:27 UTC
Can be reproduced on x86_64-linux with just ` -g -fsso-struct=big-endian -fdebug-types-section`
Comment 2 Andrew Pinski 2024-01-20 06:20:19 UTC
Confirmed.

Note the assert is NOT a checking assert so it is not just masked due to release checking ...
Comment 3 Richard Biener 2024-01-22 09:08:12 UTC
Hmm, -fdebug-types-section ... mumbles sth about axing that.
Comment 4 Michal Jireš 2024-02-08 16:33:10 UTC
Bisected to r14-7098-g5d8b60effc7268.
Comment 5 Eric Botcazou 2024-03-07 21:33:07 UTC
P1 for an artificial test with exotic options is probably an oversight, but I'm going to have a look in any case.
Comment 6 GCC Commits 2024-03-11 08:30:29 UTC
The master branch has been updated by Eric Botcazou <ebotcazou@gcc.gnu.org>:

https://gcc.gnu.org/g:0c4df2c3c38ca15c123e9a801b617e63256c83a3

commit r14-9423-g0c4df2c3c38ca15c123e9a801b617e63256c83a3
Author: Eric Botcazou <ebotcazou@adacore.com>
Date:   Mon Mar 11 09:24:50 2024 +0100

    Fix placement of recently implemented DIE
    
    It's the DIE added for enumeration types with reverse scalar storage order.
    
    gcc/
            PR debug/113519
            PR debug/113777
            * dwarf2out.cc (gen_enumeration_type_die): In the reverse case,
            generate the DIE with the same parent as in the regular case.
    
    gcc/testsuite/
            * gcc.dg/sso-20.c: New test.
            * gcc.dg/sso-21.c: Likewise.
Comment 7 Eric Botcazou 2024-03-11 08:31:11 UTC
.