Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Crash in SROA when using single-element vectors #139718

Copy link
Copy link
@mshelego

Description

@mshelego
Issue body actions

Revision: a4186bd
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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.