Issue 139718
Summary Crash in SROA when using single-element vectors
Labels new issue
Assignees
Reporter mshelego
    Revision: a4186bd04bca16a23769d9461e4b0fc1c7a03f53
Input:
```
define void @test(<1 x ptr> %arg) {
   %1 = alloca <1 x ptr>
   store <1 x ptr> %arg, ptr %1
 %2 = load ptr addrspace(999), ptr %1
   ret void
 }
```
Command:
```
opt -passes=sroa input.ll -S
```
Output:
```
opt: /src/llvm-project/llvm/lib/IR/Instructions.cpp:3037: static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*,
const llvm::Twine&, llvm::InsertPosition): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./bin/opt -passes=sroa test.ll -S
1.      Running pass "function(sroa<modify-cfg>)" on module "test.ll"
2.      Running pass "sroa<modify-cfg>" on function "test"
#0 0x0000793ac04f3e46 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:22
#1 0x0000793ac04f42cf PrintStackTraceSignalHandler(void*) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:888:1
#2 0x0000793ac04f160b llvm::sys::RunSignalHandlers() /src/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x0000793ac04f36c8 SignalHandler(int, siginfo_t*, void*) /src/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:13
#4 0x0000793abe845330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#5 0x0000793abe89eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x0000793abe89eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#7 0x0000793abe89eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#8 0x0000793abe84527e raise ./signal/../sysdeps/posix/raise.c:27:6
#9 0x0000793abe8288ff abort ./stdlib/abort.c:81:7
#10 0x0000793abe82881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x0000793abe83b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#12 0x0000793ac083db37 llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::InsertPosition) /src/llvm-projec
t/llvm/lib/IR/Instructions.cpp:3039:11
#13 0x0000793ac05c0805 llvm::IRBuilderBase::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::MDNode*, llvm::FMFSource) /user/mshel
ego/src/llvm-project/llvm/include/llvm/IR/IRBuilder.h:2241:55
#14 0x0000793ac066e1cc llvm::IRBuilderBase::CreateIntToPtr(llvm::Value*, llvm::Type*, llvm::Twine const&) /src/llvm-project/llvm/include/llvm/IR/IRBuilder.h:21
97:22
#15 0x0000793ac2b477b2 convertValue(llvm::DataLayout const&, llvm::IRBuilder<llvm::ConstantFolder, (anonymous namespace)::IRBuilderPrefixedInserter>&, llvm::Value*, [0/1874]
pe*) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:2035:38
#16 0x0000793ac2b4cec0 (anonymous namespace)::AllocaSliceRewriter::visitLoadInst(llvm::LoadInst&) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:2953:21
#17 0x0000793ac2b698c5 llvm::InstVisitor<(anonymous namespace)::AllocaSliceRewriter, bool>::visitLoad(llvm::LoadInst&) /src/llvm-project/llvm/include/llvm/IR/I
nstruction.def:172:1
#18 0x0000793ac2b64177 llvm::InstVisitor<(anonymous namespace)::AllocaSliceRewriter, bool>::visit(llvm::Instruction&) /src/llvm-project/llvm/include/llvm/IR/In
struction.def:172:1
#19 0x0000793ac2b5fc13 llvm::InstVisitor<(anonymous namespace)::AllocaSliceRewriter, bool>::visit(llvm::Instruction*) /src/llvm-project/llvm/include/llvm/IR/In
stVisitor.h:111:52
#20 0x0000793ac2b4ba42 (anonymous namespace)::AllocaSliceRewriter::visit((anonymous namespace)::Slice const*) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA
.cpp:2761:13
#21 0x0000793ac2b59223 (anonymous namespace)::SROA::rewritePartition(llvm::AllocaInst&, (anonymous namespace)::AllocaSlices&, (anonymous namespace)::Partition&) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:4945:16
#22 0x0000793ac2b5a9f5 (anonymous namespace)::SROA::splitAlloca(llvm::AllocaInst&, (anonymous namespace)::AllocaSlices&) /src/llvm-project/llvm/lib/Transforms/
Scalar/SROA.cpp:5340:45
#23 0x0000793ac2b5be98 (anonymous namespace)::SROA::runOnAlloca(llvm::AllocaInst&) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5640:11
#24 0x0000793ac2b5c905 (anonymous namespace)::SROA::runSROA(llvm::Function&) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5749:22
#25 0x0000793ac2b5cd98 llvm::SROAPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /src/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp:5789:
60
#26 0x0000793ac7c5d963 llvm::detail::PassModel<llvm::Function, llvm::SROAPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Funct
ion>&) /src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#27 0x0000793ac092c85d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /
src/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:85:18
#28 0x0000793ac55f4dcb llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function
>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#29 0x0000793ac092b178 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /src/llvm-project/llvm/lib/IR/PassManager.cp
p:129:23
#30 0x0000793ac55f4b45 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManage
r<llvm::Module>&) /src/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:92:3
#31 0x0000793ac092c489 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /src/llvm
-project/llvm/include/llvm/IR/PassManagerImpl.h:85:18
#32 0x0000644a3dcfb791 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*
, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_t
ool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /src/llvm-project/llvm/tools/opt/NewPMDriver.cpp:557:10
#33 0x0000644a3dcccfdc optMain /src/llvm-project/llvm/tools/opt/optdriver.cpp:729:27
#34 0x0000644a3dcca761 main /src/llvm-project/llvm/tools/opt/opt.cpp:25:64
#35 0x0000793abe82a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#36 0x0000793abe82a28b call_init ./csu/../csu/libc-start.c:128:20
#37 0x0000793abe82a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#38 0x0000644a3dcca645 _start (./bin/opt+0x1d645)
Aborted (core dumped)
```

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to