[llvm] [SLP]Improve/fix subvectors in gather/buildvector nodes handling (PR #104144)

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 22 16:12:42 PDT 2024


petrhosek wrote:

This change appears to have broken the UBSan runtime build with the following error:
```
FAILED: compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o 
/Volumes/Work/s/w/ir/x/w/llvm_build/./bin/clang++ --target=aarch64-unknown-linux-gnu --sysroot=/Volumes/Work/s/w/ir/x/w/cipd/linux -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Volumes/Work/s/w/ir/x/w/llvm-llvm-project/compiler-rt/lib/ubsan_minimal/.. --target=aarch64-unknown-linux-gnu -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -ffile-prefix-map=/Volumes/Work/s/w/ir/x/w/llvm_build/runtimes/runtimes-aarch64-unknown-linux-gnu-bins=../../../llvm-llvm-project -ffile-prefix-map=/Volumes/Work/s/w/ir/x/w/llvm-llvm-project/= -no-canonical-prefixes -Wall -Wno-unused-parameter -O2 -g -DNDEBUG -std=c++17 -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -O3 -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -ftrivial-auto-var-init=pattern -nostdinc++ -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS -fno-rtti -MD -MT compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o -MF compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o.d -o compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o -c /Volumes/Work/s/w/ir/x/w/llvm-llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
Assertion failed: (isValidOperands(V1, V2, Mask) && "Invalid shuffle vector instruction operands!"), function ShuffleVectorInst, file Instructions.cpp, line 1700.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /Volumes/Work/s/w/ir/x/w/llvm_build/./bin/clang++ --target=aarch64-unknown-linux-gnu --sysroot=/Volumes/Work/s/w/ir/x/w/cipd/linux -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Volumes/Work/s/w/ir/x/w/llvm-llvm-project/compiler-rt/lib/ubsan_minimal/.. --target=aarch64-unknown-linux-gnu -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -ffile-prefix-map=/Volumes/Work/s/w/ir/x/w/llvm_build/runtimes/runtimes-aarch64-unknown-linux-gnu-bins=../../../llvm-llvm-project -ffile-prefix-map=/Volumes/Work/s/w/ir/x/w/llvm-llvm-project/= -no-canonical-prefixes -Wall -Wno-unused-parameter -O2 -g -DNDEBUG -std=c++17 -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -O3 -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -ftrivial-auto-var-init=pattern -nostdinc++ -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS -fno-rtti -MD -MT compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o -MF compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o.d -o compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.aarch64.dir/ubsan_minimal_handlers.cpp.o -c /Volumes/Work/s/w/ir/x/w/llvm-llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "/Volumes/Work/s/w/ir/x/w/llvm-llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp"
4.	Running pass "instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>" on function "_ZL12decorate_msgPcm"
 #0 0x000000010b9daf68 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x106234f68)
 #1 0x000000010b9d8c79 llvm::sys::RunSignalHandlers() (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x106232c79)
 #2 0x000000010b9da4ce llvm::sys::CleanupOnSignal(unsigned long) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1062344ce)
 #3 0x000000010b92ac5e CrashRecoverySignalHandler(int) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x106184c5e)
 #4 0x00007ff80f6d95ed (/usr/lib/system/libsystem_platform.dylib+0x7ff8004265ed)
 #5 0x000060000355bbe0 
 #6 0x00007ff80f5d2b45 (/usr/lib/system/libsystem_c.dylib+0x7ff80031fb45)
 #7 0x00007ff80f5d1e5e (/usr/lib/system/libsystem_c.dylib+0x7ff80031ee5e)
 #8 0x000000010b666d9a llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&, llvm::InsertPosition) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x105ec0d9a)
 #9 0x00000001063bf0e7 llvm::IRBuilderBase::CreateShuffleVector(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100c190e7)
#10 0x000000010a96ff2b llvm::InstCombinerImpl::visitCallInst(llvm::CallInst&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1051c9f2b)
#11 0x000000010a9253fe llvm::InstCombinerImpl::run() (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10517f3fe)
#12 0x000000010a92844f combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::BranchProbabilityInfo*, llvm::ProfileSummaryInfo*, llvm::LoopInfo*, llvm::InstCombineOptions const&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10518244f)
#13 0x000000010a927c08 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x105181c08)
#14 0x00000001065d7e02 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e31e02)
#15 0x000000010b6cb305 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x105f25305)
#16 0x00000001065d9be2 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e33be2)
#17 0x000000010b6ce001 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x105f28001)
#18 0x00000001065d3692 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e2d692)
#19 0x000000010b6ca505 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x105f24505)
#20 0x00000001065d180a (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream>>&, std::__2::unique_ptr<llvm::ToolOutputFile, std::__2::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e2b80a)
#21 0x00000001065c8d83 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e22d83)
#22 0x00000001065bf078 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100e19078)
#23 0x0000000107cf73e9 clang::ParseAST(clang::Sema&, bool, bool) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1025513e9)
#24 0x00000001068e04c3 clang::FrontendAction::Execute() (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10113a4c3)
#25 0x000000010684070d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10109a70d)
#26 0x00000001069cae18 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x101224e18)
#27 0x000000010585d749 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1000b7749)
#28 0x0000000105859f5b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1000b3f5b)
#29 0x0000000106689f0e void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const::$_0>(long) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100ee3f0e)
#30 0x000000010b92a97e llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10618497e)
#31 0x00000001066897ba clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__2::optional<llvm::StringRef>>, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char>>*, bool*) const (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100ee37ba)
#32 0x00000001066463ca clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100ea03ca)
#33 0x00000001066466ef clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&, bool) const (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100ea06ef)
#34 0x0000000106667f20 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__2::pair<int, clang::driver::Command const*>>&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x100ec1f20)
#35 0x00000001058593e3 clang_main(int, char**, llvm::ToolContext const&) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x1000b33e3)
#36 0x0000000105bc2bc6 findTool(int, char**, char const*) (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10041cbc6)
#37 0x0000000105bc2280 main (/Volumes/Work/s/w/ir/x/w/llvm_build/bin/llvm+0x10041c280)
#38 0x00007ff80f35141f 
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
```
Would it be possible to take a look and revert the change if the issue cannot be addressed quickly?

https://github.com/llvm/llvm-project/pull/104144


More information about the llvm-commits mailing list