[llvm-bugs] [Bug 49730] New: [SLPVectorizer] Assertion `idx < size()' failed.

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Mar 26 03:18:37 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=49730

            Bug ID: 49730
           Summary: [SLPVectorizer]  Assertion `idx < size()' failed.
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: max.kazantsev at azul.com
                CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org

To reproduce: run opt -S -passes=slp-vectorizer on the following test:

; ModuleID = './bugpoint-reduced-simplified.bc'
target datalayout =
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"

define void @bar() {
bb:
  %tmp = call i32 @llvm.smin.i32(i32 undef, i32 2)
  %tmp1 = sub nsw i32 undef, %tmp
  %tmp2 = call i32 @llvm.umin.i32(i32 undef, i32 %tmp1)
  %tmp3 = call i32 @llvm.smin.i32(i32 undef, i32 2)
  %tmp4 = sub nsw i32 undef, %tmp3
  %tmp5 = call i32 @llvm.umin.i32(i32 %tmp2, i32 %tmp4)
  %tmp6 = call i32 @llvm.smin.i32(i32 undef, i32 1)
  %tmp7 = sub nuw nsw i32 undef, %tmp6
  %tmp8 = call i32 @llvm.umin.i32(i32 %tmp5, i32 %tmp7)
  %tmp9 = call i32 @llvm.smin.i32(i32 undef, i32 1)
  %tmp10 = sub nsw i32 undef, %tmp9
  %tmp11 = call i32 @llvm.umin.i32(i32 %tmp8, i32 %tmp10)
  %tmp12 = sub nsw i32 undef, undef
  %tmp13 = call i32 @llvm.umin.i32(i32 %tmp11, i32 %tmp12)
  %tmp14 = call i32 @llvm.umin.i32(i32 %tmp13, i32 93)
  ret void
}

; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare i32 @llvm.smin.i32(i32, i32)

; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare i32 @llvm.umin.i32(i32, i32)



The failure is:
opt:
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallVector.h:281:
const T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2>
>::operator[](llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2>
>::size_type) const [with T = llvm::SmallVector<llvm::Value*, 16>;
<template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T,
<template-parameter-1-2> >::const_reference = const
llvm::SmallVector<llvm::Value*, 16>&; llvm::SmallVectorTemplateCommon<T,
<template-parameter-1-2> >::size_type = long unsigned int]: Assertion `idx <
size()' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash
backtrace.
Stack dump:
0.      Program arguments: /home/mkazantsev/work/orca_install/RA/bin/opt -S
-passes=slp-vectorizer ./simple.ll
 #0 0x00007f9b9bf6ed4c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Support/Unix/Signals.inc:569:0
 #1 0x00007f9b9bf6cb64 llvm::sys::RunSignalHandlers()
/localhome/mkazantsev/work/orca/orca/llvm/lib/Support/Signals.cpp:71:0
 #2 0x00007f9b9bf6d593 SignalHandler(int)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Support/Unix/Signals.inc:397:0
 #3 0x00007f9b9b494630 __restore_rt sigaction.c:0:0
 #4 0x00007f9b9a83c3d7 raise (/lib64/libc.so.6+0x363d7)
 #5 0x00007f9b9a83dac8 abort (/lib64/libc.so.6+0x37ac8)
 #6 0x00007f9b9a8351a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f9b9a835252 (/lib64/libc.so.6+0x2f252)
 #8 0x00007f9b9d2af584 llvm::isa_impl_cl<llvm::SelectInst, llvm::Value
const*>::doit(llvm::Value const*)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/Support/Casting.h:104:0
 #9 0x00007f9b9d2af584 llvm::isa_impl_wrap<llvm::SelectInst, llvm::Value
const*, llvm::Value const*>::doit(llvm::Value const* const&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/Support/Casting.h:131:0
#10 0x00007f9b9d2af584 llvm::isa_impl_wrap<llvm::SelectInst, llvm::Value*
const, llvm::Value const*>::doit(llvm::Value* const&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/Support/Casting.h:123:0
#11 0x00007f9b9d2af584 bool llvm::isa<llvm::SelectInst,
llvm::Value*>(llvm::Value* const&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/Support/Casting.h:143:0
#12 0x00007f9b9d2af584 llvm::cast_retty<llvm::SelectInst,
llvm::Value*>::ret_type llvm::dyn_cast<llvm::SelectInst,
llvm::Value>(llvm::Value*)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/Support/Casting.h:345:0
#13 0x00007f9b9d2af584 (anonymous
namespace)::HorizontalReduction::createOp(llvm::IRBuilder<llvm::ConstantFolder,
llvm::IRBuilderDefaultInserter>&, llvm::RecurKind, llvm::Value*, llvm::Value*,
llvm::Twine const&, llvm::SmallVector<llvm::SmallVector<llvm::Value*, 16u>, 2u>
const&)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:6691:0
#14 0x00007f9b9d2dd85e tryToReduce
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:7158:0
#15 0x00007f9b9d2dd85e tryToVectorizeHorReductionOrInstOperands(llvm::PHINode*,
llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&,
llvm::TargetTransformInfo*, llvm::function_ref<bool (llvm::Instruction*,
llvm::slpvectorizer::BoUpSLP&)>) (.constprop.1675)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:7520:0
#16 0x00007f9b9d2de35d
llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Value*,
llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:7575:0
#17 0x00007f9b9d2df29f
llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*,
llvm::slpvectorizer::BoUpSLP&)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:7770:0
#18 0x00007f9b9d2dfd4c llvm::SLPVectorizerPass::runImpl(llvm::Function&,
llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*,
llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*,
llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*)
(.part.1670)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:6097:0
#19 0x00007f9b9d2e0496 llvm::SLPVectorizerPass::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&)
/localhome/mkazantsev/work/orca/orca/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:6035:0
#20 0x00007f9b9e0251cd llvm::detail::PassModel<llvm::Function,
llvm::SLPVectorizerPass, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManagerInternal.h:86:0
#21 0x00007f9b9c0f9659 llvm::SmallPtrSet<void*,
2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:488:0
#22 0x00007f9b9c0f9659
llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:155:0
#23 0x00007f9b9c0f9659 llvm::PassManager<llvm::Function,
llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&,
llvm::AnalysisManager<llvm::Function>&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:517:0
#24 0x00007f9b9e020e3d llvm::detail::PassModel<llvm::Function,
llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >,
llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>
>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManagerInternal.h:86:0
#25 0x00007f9b9c0f9157 llvm::SmallPtrSet<void*,
2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:488:0
#26 0x00007f9b9c0f9157
llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:155:0
#27 0x00007f9b9c0f9157 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&)
/localhome/mkazantsev/work/orca/orca/llvm/lib/IR/PassManager.cpp:117:0
#28 0x000000000041e5dd llvm::detail::PassModel<llvm::Module,
llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManagerInternal.h:86:0
#29 0x00007f9b9c0f7a47 llvm::SmallPtrSet<void*,
2u>::operator=(llvm::SmallPtrSet<void*, 2u>&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:488:0
#30 0x00007f9b9c0f7a47
llvm::PreservedAnalyses::operator=(llvm::PreservedAnalyses&&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:155:0
#31 0x00007f9b9c0f7a47 llvm::PassManager<llvm::Module,
llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&,
llvm::AnalysisManager<llvm::Module>&)
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:517:0
#32 0x0000000000427b92 llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:82:0
#33 0x0000000000427b92
llvm::SmallPtrSetImpl<llvm::AnalysisKey*>::~SmallPtrSetImpl()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:343:0
#34 0x0000000000427b92 llvm::SmallPtrSet<llvm::AnalysisKey*,
2u>::~SmallPtrSet()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallPtrSet.h:449:0
#35 0x0000000000427b92 llvm::PreservedAnalyses::~PreservedAnalyses()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/IR/PassManager.h:155:0
#36 0x0000000000427b92 llvm::runPassPipeline(llvm::StringRef, llvm::Module&,
llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*,
llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef,
llvm::ArrayRef<llvm::StringRef>, llvm::opt_tool::OutputKind,
llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool)
/localhome/mkazantsev/work/orca/orca/llvm/tools/opt/NewPMDriver.cpp:453:0
#37 0x000000000041bfa2 llvm::SmallVectorTemplateCommon<llvm::StringRef,
void>::end()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallVector.h:255:0
#38 0x000000000041bfa2 llvm::SmallVector<llvm::StringRef, 4u>::~SmallVector()
/localhome/mkazantsev/work/orca/orca/llvm/include/llvm/ADT/SmallVector.h:1175:0
#39 0x000000000041bfa2 main
/localhome/mkazantsev/work/orca/orca/llvm/tools/opt/opt.cpp:814:0
#40 0x00007f9b9a828555 __libc_start_main (/lib64/libc.so.6+0x22555)
#41 0x000000000041c85e _start
(/home/mkazantsev/work/orca_install/RA/bin/opt+0x41c85e)
Aborted (core dumped)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210326/f47e024d/attachment-0001.html>


More information about the llvm-bugs mailing list