https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109573
Bug ID: 109573 Summary: [12/13/14 regression] ICE in vectorizable_live_operation, at tree-vect-loop.cc:9060 when building chromium's maglev-assembler-x64.cc with -march=ivybridge Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: sjames at gcc dot gnu.org Target Milestone: --- Host: x86_64-pc-linux-gnu Target: x86_64-pc-linux-gnu Build: x86_64-pc-linux-gnu Occurs when building chromium. Originally reported in Gentoo at https://bugs.gentoo.org/904455. Needs -march=ivybridge. GCC 11 is OK, but 12/13 and presumably 14 are not. (Unlike my recent reports, does not need checking.) ``` out/Release $ g++-13 -MMD -MF obj/v8/v8_base_without_compiler/maglev-assembler-x64.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64 -DV8_INTL_SUPPORT -DV8_USE_EXTERNAL_STARTUP_DATA -DV8_ATOMIC_OBJECT_FIELD_WRITES -DV8_ENABLE_LAZY_SOURCE_POSITIONS -DV8_SHARED_RO_HEAP -DV8_WIN64_UNWINDING_INFO -DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH -DV8_SHORT_BUILTIN_CALLS -DV8_EXTERNAL_CODE_SPACE -DV8_ENABLE_MAGLEV -DV8_ENABLE_TURBOFAN -DV8_ENABLE_WEBASSEMBLY -DV8_ALLOCATION_FOLDING -DV8_ALLOCATION_SITE_TRACKING -DV8_ADVANCED_BIGINT_ALGORITHMS -DV8_STATIC_ROOTS -DV8_USE_ZLIB -DV8_USE_LIBM_TRIG_FUNCTIONS -DV8_ENABLE_WASM_SIMD256_REVEC -DV8_COMPRESS_POINTERS -DV8_COMPRESS_POINTERS_IN_SHARED_CAGE -DV8_31BIT_SMIS_ON_64BIT_ARCH -DV8_ENABLE_SANDBOX -DV8_DEPRECATION_WARNINGS -DCPPGC_CAGED_HEAP -DCPPGC_YOUNG_GENERATION -DCPPGC_POINTER_COMPRESSION -DCPPGC_SLIM_WRITE_BARRIER -DV8_TARGET_ARCH_X64 -DV8_HAVE_TARGET_OS -DV8_TARGET_OS_LINUX -DUSING_SYSTEM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DU_IMPORT=U_EXPORT -DUSE_SYSTEM_ZLIB=1 -I../.. -Igen -I../../v8 -I../../v8/include -Igen/v8 -Igen/v8/include -Igen/shim_headers/icui18n_shim -Igen/shim_headers/icuuc_shim -Igen/shim_headers/zlib_shim -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -Wno-comments -Wno-packed-not-aligned -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -fno-ident -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -fno-omit-frame-pointer -fvisibility=hidden -Wno-strict-overflow -Wno-return-type -Wno-int-in-bool-context -Wno-deprecated -Wno-narrowing -Wno-class-memaccess -std=gnu++2a -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -O2 -march=ivybridge -pipe -O2 -march=ivybridge -pipe -c ../../v8/src/maglev/x64/maglev-assembler-x64.cc -o obj/v8/v8_base_without_compiler/maglev-assembler-x64.o during GIMPLE pass: slp ../../v8/src/maglev/x64/maglev-assembler-x64.cc: In member function ‘void v8::internal::maglev::MaglevAssembler::Prologue(v8::internal::maglev::Graph*)’: ../../v8/src/maglev/x64/maglev-assembler-x64.cc:515:6: internal compiler error: in vectorizable_live_operation, at tree-vect-loop.cc:10117 515 | void MaglevAssembler::Prologue(Graph* graph) { | ^~~~~~~~~~~~~~~ 0x6a599b vectorizable_live_operation(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*, int, bool, vec<stmt_info_for_cost, va_heap, vl_ptr>*) /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-loop.cc:10117 0x1cea7e0 can_vectorize_live_stmts /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-stmts.cc:11206 0x1d110b2 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-stmts.cc:11607 0x10925a0 vect_schedule_slp_node /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:8952 0x10a3198 vect_schedule_scc /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:9147 0x10a2e32 vect_schedule_scc /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:9128 0x10a36fc vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:9287 0x10a60fe vect_slp_region /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:7496 0x10a6b89 vect_slp_bbs /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:7608 0x10a6e80 vect_slp_function(function*) /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vect-slp.cc:7709 0x10aef81 execute /usr/src/debug/sys-devel/gcc-13.0.1_pre20230419-r1/gcc-13.1.0-RC2-20230419/gcc/tree-vectorizer.cc:1532 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://bugs.gentoo.org/> for instructions. ``` --- Preprocessed source: https://dev.gentoo.org/~sam/bugs/gcc/gcc-chromium-vectorize-x86/maglev-assembler-x64.ii.xz. I'm sorry for the external link, but it's 1.1MB even when highly compressed with e.g. xz -9e. Reproducer: ``` $ g++ -S -O2 -std=gnu++2a -march=ivybridge -c maglev-assembler-x64.ii [...] ``` I'm going to try reduce it now.