Issue 127220
Summary [SLPVectorizer] Crash: Invalid shuffle vector instruction operands!
Labels new issue
Assignees
Reporter ashermancinelli
    ```
clang -O3 reduced.ll
clang-21: llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, const llvm::Twine&, llvm::InsertPosition):
 Assertion `isValidOperands(V1, V2, Mask) && "Invalid shuffle vector instruction operands!"' failed.
PLEASE submit a bug report to https: and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments:  -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name reduced.ll -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir= -fcoverage-compilation-dir= -resource-dir  -O3 -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o  -x ir reduced.ll
1.      Optimizer
2. 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-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;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;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "reduced.ll"
3.      Running pass "slp-vectorizer" on function "foo"
 #0 0x00005602ae2be83b llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (
 #1 0x00005602ae2bc054 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x00007f6eeda3e730 __restore_rt (
 #3 0x00007f6eeda8ba6c __pthread_kill_implementation (
 #4 0x00007f6eeda3e686 gsignal (
 #5 0x00007f6eeda28833 abort (
 #6 0x00007f6eeda2875b _nl_load_domain.cold (
 #7 0x00007f6eeda373c6 (
 #8 0x00005602adc2befe llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&, llvm::InsertPosition) (
 #9 0x00005602acef4b64 llvm::IRBuilderBase::CreateShuffleVector(llvm::Value*, llvm::Value*, llvm::ArrayRef<int>, llvm::Twine const&) X86InstCombineIntrinsic.cpp:0:0
#10 0x00005602b018eef2 (anonymous namespace)::HorizontalReduction::emitReduction(llvm::IRBuilderBase&, llvm::TargetTransformInfo const&, llvm::Type*)::'lambda0'(llvm::Value*, unsigned int, bool)::operator()(llvm::Value*, unsigned int, bool) const SLPVectorizer.cpp:0:0
#11 0x00005602b02041ba (anonymous namespace)::HorizontalReduction::tryToReduce(llvm::slpvectorizer::BoUpSLP&, llvm::DataLayout const&, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo const&, llvm::AssumptionCache*) SLPVectorizer.cpp:0:0
#12 0x00005602b0207130 llvm::SLPVectorizerPass::vectorizeHorReduction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::SmallVectorImpl<llvm::WeakTrackingVH>&) (
#13 0x00005602b020b7db llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#14 0x00005602b0210459 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (
#15 0x00005602b0216b86 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#16 0x00005602b02176db llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (
#17 0x00005602afbfa822 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#18 0x00005602adcc7b59 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (
#19 0x00005602acbb1f82 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) NVPTXTargetMachine.cpp:0:0
#20 0x00005602adcc63c2 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (
#21 0x00005602acbb1ee2 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) NVPTXTargetMachine.cpp:0:0
#22 0x00005602adcc5de1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (
#23 0x00005602aed49df9 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#24 0x00005602aed4d963 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (
#25 0x00005602aeebc237 clang::CodeGenAction::ExecuteAction() (
#26 0x00005602af2caea5 clang::FrontendAction::Execute() (
#27 0x00005602af24ac0e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (
#28 0x00005602af3d1d6e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (
#29 0x00005602acb64337 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (
#30 0x00005602acb5b7da ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#31 0x00005602acb5f80a clang_main(int, char**, llvm::ToolContext const&) (
#32 0x00005602acb737b7 main (
#33 0x00007f6eeda295d0 __libc_start_call_main (
#34 0x00007f6eeda29680 __libc_start_main@GLIBC_2.2.5 (
#35 0x00005602acb5b26e _start (
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.0.0git (https: 083f099a345f02390d00a8196d4ffa36ae71c82f)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: 
Build config: +assertions
```
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @foo(ptr %0, ptr %1, ptr %2) {
  br label %4

4:                                                ; preds = %7, %3
  %5 = phi i32 [ 0, %3 ], [ %9, %7 ]
  %6 = phi i1 [ true, %3 ], [ false, %7 ]
  br i1 %6, label %7, label %19

7: ; preds = %12, %4
  %8 = phi i64 [ %17, %12 ], [ 0, %4 ]
  %9 = phi i32 [ %16, %12 ], [ 0, %4 ]
  %10 = phi i64 [ %18, %12 ], [ 9, %4 ]
  %11 = icmp sgt i64 %10, 0
  br i1 %11, label %12, label %4

12:                                               ; preds = %7
  %13 = getelementptr i32, ptr %1, i64 %8
  %14 = load i32, ptr %13, align 4
 %.not = icmp ne i32 %14, 0
  %15 = zext i1 %.not to i32
  %16 = add i32 %9, %15
  %17 = add i64 %8, 1
  %18 = add i64 %10, -1
  br label %7

19: ; preds = %33, %4
  %20 = phi i64 [ %34, %33 ], [ 0, %4 ]
  %21 = phi i32 [ %25, %33 ], [ 0, %4 ]
  %22 = phi i64 [ %35, %33 ], [ 4, %4 ]
  %23 = icmp sgt i64 %22, 0
  br i1 %23, label %24, label %36

24:                                               ; preds = %27, %19
  %25 = phi i32 [ %32, %27 ], [ 0, %19 ]
  %26 = phi i1 [ false, %27 ], [ true, %19 ]
  br i1 %26, label %27, label %33

27: ; preds = %24
  %28 = getelementptr i8, ptr %2, i64 %20
  %29 = load i32, ptr %28, align 4
  %30 = icmp eq i32 %29, 0
 %31 = zext i1 %30 to i32
  %32 = add i32 %21, %31
  br label %24

33: ; preds = %24
  %34 = add i64 %20, 1
  %35 = add i64 %22, -1
  br label %19

36: ; preds = %19
  %37 = sub i32 %21, %5
  store i32 %37, ptr %0, align 4
  ret void
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to