https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123629
Bug ID: 123629
Summary: [16 regression] ICE when building clang-21.1.8
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: ted.d.rodgers at gmail dot com
Target Milestone: ---
Created attachment 63359
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=63359&action=edit
State.cpp.ii gzipped
ipa cp results in ICE with clang-21.1.8
This is with 2 patches applied that fixed the ICE with llvm from bug 123587:
https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=946580776e85db57b914c0a883f455caaa59b92d
https://raw.githubusercontent.com/gentoo/gcc-patches/refs/heads/master/16.0.0/gentoo/87_all_PR123619-ipa-cp.patch
FAILED: [code=1] bin/c-index-test
: && /usr/bin/x86_64-pc-linux-gnu-g++ -march=native -O3 -flto=56
-mprefer-vector-width=512 -fno-vect-cost-model -pipe -Werror=lto-type-mismatch
-Werror=odr -Werror=strict-aliasing -ggdb3 -fPIC -fno-semantic-interposition
-fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -Wimplicit-fallthrough -Wno-nonnull
-Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move
-Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment
-Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color
-ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -pedantic
-Wno-long-long -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs
-Wl,-rpath-link,/var/tmp/portage/llvm-core/clang-21.1.8/work/x/y/clang-abi_x86_64.amd64/./lib64
-Wl,--gc-sections
-Wl,--dependency-file=tools/c-index-test/CMakeFiles/c-index-test.dir/link.d
tools/c-index-test/CMakeFiles/c-index-test.dir/c-index-test.c.o
tools/c-index-test/CMakeFiles/c-index-test.dir/core_main.cpp.o -o
bin/c-index-test -L/usr/lib/llvm/21/lib64
-Wl,-rpath,"\$ORIGIN/../lib64:/var/tmp/portage/llvm-core/clang-21.1.8/work/x/y/clang-abi_x86_64.amd64/lib64:/usr/lib/llvm/21/lib64:"
lib64/libclang.so.21.1.8 lib64/libclangAST.a lib64/libclangBasic.a
lib64/libclangFrontend.a lib64/libclangIndex.a lib64/libclangSerialization.a
/usr/lib64/libxml2.so lib64/libclangFrontend.a lib64/libclangDriver.a
lib64/libclangParse.a lib64/libclangSerialization.a lib64/libclangSema.a
lib64/libclangAPINotes.a lib64/libclangEdit.a lib64/libclangAnalysis.a
lib64/libclangASTMatchers.a lib64/libclangAST.a lib64/libclangSupport.a
lib64/libclangFormat.a lib64/libclangToolingInclusions.a
lib64/libclangToolingCore.a lib64/libclangRewrite.a lib64/libclangLex.a
lib64/libclangBasic.a /usr/lib/llvm/21/lib64/libLLVM.so.21.1 -lgcc_s_asneeded
-lgcc_s_asneeded && :
during IPA pass: cp
lto1: internal compiler error: Segmentation fault
0x5569ecedd787 internal_error(char const*, ...)
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/diagnostic-global-context.cc:787
0x5569eb04b56a crash_signal
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/toplev.cc:325
0x7f57816453ff ???
/usr/src/debug/sys-libs/glibc-2.42-r3/glibc-2.42/signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x5569ecaf16c8 vec<ipa_polymorphic_call_context, va_heap,
vl_embed>::operator[](unsigned int)
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/vec.h:911
0x5569ecaf16c8 vec<ipa_polymorphic_call_context, va_heap,
vl_ptr>::operator[](unsigned int)
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/vec.h:1610
0x5569ecaf16c8 ipcp_val_replacement_ok_p(vec<tree_node*, va_heap, vl_ptr>&,
vec<ipa_polymorphic_call_context, va_heap, vl_ptr>&, vec<ipa_argagg_value,
va_gc, vl_embed>*, int, long, ipa_polymorphic_call_context)
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:5896
0x5569ecaf16c8 bool
decide_about_value<ipa_polymorphic_call_context>(cgraph_node*, int, long,
ipcp_value<ipa_polymorphic_call_context>*, vec<cgraph_node*, va_heap, vl_ptr>*,
int) [clone .constprop.0]
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:6039
0x5569ecadaf12 decide_whether_version_node
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:6238
0x5569ecadc9c0 ipcp_decision_stage
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:6550
0x5569ecadc9c0 ipcp_driver
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:6746
0x5569ecadc9c0 execute
/usr/src/debug/sys-devel/gcc-16.0.0_p20260111-r1/gcc-16-20260111/gcc/ipa-cp.cc:6823
This failed part will produced the ice:
/usr/bin/x86_64-pc-linux-gnu-g++ -march=native -O3 -flto=56
-mprefer-vector-width=512 -fno-vect-cost-model -pipe -Werror=lto-type-mismatch
-Werror=odr -Werror=strict-aliasing -ggdb3 -fPIC -fno-semantic-interposition
-fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra
-Wno-unused-parameter -Wwrite-strings -Wcast-qual
-Wno-missing-field-initializers -Wimplicit-fallthrough -Wno-nonnull
-Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move
-Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment
-Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color
-ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -pedantic
-Wno-long-long -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs
-Werror=lto-type-mismatch -Werror=odr -Werror=strict-aliasing
-Wl,-rpath-link,/var/tmp/portage/llvm-core/clang-21.1.8/work/x/y/clang-abi_x86_64.amd64/./lib64
-Wl,--gc-sections
-Wl,--dependency-file=tools/c-index-test/CMakeFiles/c-index-test.dir/link.d
tools/c-index-test/CMakeFiles/c-index-test.dir/c-index-test.c.o
tools/c-index-test/CMakeFiles/c-index-test.dir/core_main.cpp.o -o
bin/c-index-test -L/usr/lib/llvm/21/lib64
-Wl,-rpath,"\$ORIGIN/../lib64:/var/tmp/portage/llvm-core/clang-21.1.8/work/x/y/clang-abi_x86_64.amd64/lib64:/usr/lib/llvm/21/lib64:"
lib64/libclang.so.21.1.8 /usr/lib/llvm/21/lib64/libLLVM.so.21.1
-lgcc_s_asneeded -lgcc_s_asneeded /usr/lib64/libxml2.so lib64/libclangAST.a
Extracted lib64/libclangAST.a and used a sed loop through a reference file to
remove each .o file one by one. Once State.cpp.o was removed, compiler no
longer errored.
State.cpp.ii is attached