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)
Can be reproduced on x86_64-linux with just ` -g -fsso-struct=big-endian -fdebug-types-section`
Confirmed. Note the assert is NOT a checking assert so it is not just masked due to release checking ...
Hmm, -fdebug-types-section ... mumbles sth about axing that.
Bisected to r14-7098-g5d8b60effc7268.
P1 for an artificial test with exotic options is probably an oversight, but I'm going to have a look in any case.
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.
.