https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114077
Bug ID: 114077 Summary: ICE in do_SUBST at combine.cc with aarch64 crosscompiler Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, needs-bisection Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pheeck at gcc dot gnu.org Target Milestone: --- Host: x86_64-linux Target: aarch64-gnu-linux While compiling the gcc.dg/asan/pr107317.c testsuite testcase using aarch64 crosscompiler: aarch64-linux-gnu-gcc /home/worker/buildworker/tiber-option-juggler/build/gcc/testsuite/gcc.dg/asan/pr107317.c -fno-optimize-sibling-calls -fharden-control-flow-redundancy -mabi=ilp32 -Ofast we hit this ICE: during RTL pass: combine /home/worker/buildworker/tiber-option-juggler/build/gcc/testsuite/gcc.dg/asan/pr107317.c: In function ‘foo’: /home/worker/buildworker/tiber-option-juggler/build/gcc/testsuite/gcc.dg/asan/pr107317.c:13:1: internal compiler error: in do_SUBST, at combine.cc:698 13 | } | ^ 0x78f6e1 do_SUBST /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:698 0x199342c subst /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:5583 0x199337d subst /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:5536 0x1996348 try_combine /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:3302 0x199afd4 combine_instructions /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:1264 0x199afd4 rest_of_handle_combine /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:15091 0x199afd4 execute /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/gcc/combine.cc:15135 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. There's an open PR for an ICE with roughly the same stacktrace: pr81874. Maybe it's the same problem. The testcase: /* PR middle-end/107317 */ /* { dg-do compile { target ilp32 } } */ /* { dg-options "-fsanitize=address -ffat-lto-objects" } */ void bar (float *, float *); void foo (void) /* { dg-error "exceeds maximum" } */ { float a[400000000]; float b[200000000]; bar (a, b); } The compiler configuration: Using built-in specs. COLLECT_GCC=/home/worker/cross/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/home/worker/cross/libexec/gcc/aarch64-linux-gnu/14.0.1/lto-wrapper Target: aarch64-linux-gnu Configured with: /home/worker/buildworker/tiber-gcc-trunk-aarch64/build/configure --enable-languages=c,c++,fortran,rust,m2 --disable-bootstrap --disable-libsanitizer --disable-multilib --enable-checking=release --prefix=/home/worker/cross --target=aarch64-linux-gnu --with-as=/usr/bin/aarch64-suse-linux-as Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 14.0.1 20240222 (experimental) 37127ed975e09813eaa2d1cf1062055fce45dd16 (GCC)