<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/139718>139718</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Crash in SROA when using single-element vectors
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mshelego
      </td>
    </tr>
</table>

<pre>
    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)
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEWltv46zW_jX0BjUCfL7IhZu-0Vd903eqtntuI4xxyh4HLMA9_PstsJPabjpN2sxBo7bBrMV6nnUAvEKNEWvJ-RxEFyC6PKOtfVB6vjEPvOZrdVao8mV-yx-FEUqCIIc0xGlclCgsGMUxJUESZ2UWxpiHBaoYZglFQRUFAOVXsmktCHKAchCj_j_KS14JyeGjEiUEIbLcWEBSECwwfIaN1SD4BwISUb0GJIMguQAoh9ANYQiCS0jrWjEKRwLdFGOV5nC_poUb8ErcXEAi4pXVipb-CS1LbRrKOCBplmWAZFMZCDW33myvIbmc4FqozYbK8i1g1Vh43lBjuAHBpdGKQuGomdU1PL-bTP7e2r2sqcYNQkCWRjNAlnX9uDlvtPovZ7b_6H6JApDl1a37IY3VLbNCSTNjTQOCPEBB4pQYS61g0MsEOQjyBTXWzQck3zfafdKcWsfO64TBEq8S3xvjmHud9YPWLQckH4_evzT9IEA5U9LY4cMnITkg8VjkShqu7Y0ywq9IMoclN25QKAlBjJiz2PygtSgBSVXj5O_cj_sXH0tOYwwBIVfy0U2CTgAQDAgBJIEVFTUvZwDlN9_-ye_-gaYtNsJCCot2DTVvlLbQKvhgbWOcTWQJyHIt7ENbzJjaDPww9o4wpuUGkCWksoRCsrotObQPHDJNzQMsKPtpNWXcrX1nKfsJy3bTdFGAZtD_u9FqrekGUr1uN1xaZwGcAbIshARkuSfKXGrtggz3am5bKYVcQzfVUVG1svMgSZ0QCBYbVYrq5ZxVa5dZLhEIVBJuVNnW3In0eh1rKCfv6N2vzGvaLrnV1SkCJEAQPSOEUJIFlKGwCngYDwLAvJjujxstpPU83esuZV8nafq0UsZqTjd9BAlpO-8fkDp3beO8DMjyP1I8uwGxlrQ2MyEZCPIUhSDIt-biibkhYRWc2NbJ_x-VZc01IKmvHy7uT2RQmoIgx509ZGIPjlGxj77bVo7MMq7-Hm_Q1pKuuGAUOWpQZ0ow9WTMUjjlwjtmAY1YC1mple2LxIkpCrGnKOgMCweGFTwNoyBA0OPvtT2n8SoOz2sh2-fztWy7B2xm1CwG5AI9exGXFl5fNNaX8YIwuFo19kFzWq5-irpeiU1Tc5ey1Ee9y1nZ2BqQ5XDazBvr4iuJO93xIbql5VrS-pdaE89A75pkn9ahyC9VpdlAVTolkyQcaioM9zqM9wMgy5n_9GJK7jaHZaOM95Of6bUSty_1qLOxUpKmVQVp4WqvV2PLzlF-qLMJO4x9TqI34riAK1mv3Fa_KtWGis4FQnqEbnhj1ox2ujBOnC29dzEeawuKCCfHhYsX2YULHudoGpRFkPz5PXe610K_A3-84-5NSIDyY44gPoD6ioXHdSJiKEXR0IDbi1bUJdcX1PAhJwu_cf8tXq4v_1XlW5Hl9fJOtdptSJ6p1rgyt_SHaYByvlYf1LP-ZPA60NG4JWH24Def0IV7FPUMhiMG45hjxg5h8Erae3Vj9YjFL_DzYbE-CJyLiywZ7rHDAstIESZJQdyyj1zb3twBgEtq6Tf6olr7Xkhv1wPBYpB2bi6Vdqn8I7JwOU6lki8b1Roo6Yb3l4NsouZG80o887JLFe4vI9M1h6yC6AIBssRpEoLIXSF6ag_c6-41laZSeuPq6B2jNXURdnf7Pe8TjKDA7cNB2tMXT-hjnKGPwOX-hnVXC8Zv-ZMWHpZ74K6B9puiZXdZGPD-OnhIKByKJYuCbVA4LMkYS5ylLBpXK_vDWaiccz-BkSxgoVTtXDiG-wWo70Q9QPlrwZqVvHJFMSGvZzmcTsCGOEl-O9h3S-pXsEqA8l9jzcZYo4rh4C9iPSQdf4m1N9aXNIx9ue7LGUGTfCxoSL6Wj_408kt5L7mth6eoNQDtUjSJ8eB0TfDEkxkhwUfwvMbu7tahu6Ha9ieOgYs6Fq5ei_rhrJnDJAbrnrCKhVnoKjLuj7eETCiiWRUdTpFpamE7aKdl5zNwAcr3IY6CEDng_RGFBBPEBc_SI4Kild_lx4hP5a4o9sZvT6gknBjPMnSEu3Qr_Yeh4cvdG5dTmp2E2eDYRKKp2WWWDkqqk7yhxuysfN_C4Ukml7R-McJcU0nXkzPUTqg_AZ0Omb9zApTH_bWTjA41CYvKLB7uFyW3VNTbnDbmWpW83m_rCN2OlE9h3m4upyMToPwYPvdvSZ6AboWr_l2B35cytwFvy_boZIUywtKoHFg60HEAjX-PsClbbjP-EmGbpiMr9RW8P1OT0dEsiqqwZMUJwu-3sXy8HMr_jIN-Uzhnk3AucDIsftf-Tfa92prkdOYlbfz5ch_gTuAouL3IcbVwinDGGndDdLHntxbSAxy_KHcRWITRURG4RbQ4kJZP4H4veg4iE6D8S3x-Pngmb_UzwsI0OyBL9zH6B4g6giWA8pPVwF2vIQ5DGpSsKpIMD4zUrQ-fG9Hw2vfyBrjurBZyfcurfeH3Bu491Wturyl78Hqmb6H802-i0FS_XMlKOXPfzlKq7hqrS1HvUfLmMTpOwTuIcq3pixsdusjTUrdrId-W5tf5xpbd2K49Fyy6jvmQSadr-zrLO3xfwVeNXVl_-3WfOhT_L2S5ZxZA-W7iD65FJbjeTvUX6KN_f5iozjLTtS8BWf7Ln26uL7V49LXPn_6iZNBw2PWV-rBjrCoZVI29pkIet5RqbDlcKOkqbN9G2PWJtgvRJMZw85lVtjdllz5x2KuftI0IxYzC1aoWBVsZS7VdMVrXq12zgpn2bR-l79HsE_IZm4SDshZPVyRpAf18IYWdLtL96TSfe81db4SkwxZfsk_jCMM-8_dqDkLn5f6-uGsr7biPwwh2Kl38j3revseCyziMuh5LXihtuc8TpjT3fXRe9v2Xwfcpzsp5UGZBRs_4HCdhgoM0iqOzh3nBo6rCjBRVHMY8zQiNkiKmEYoxwVnFzsScIBKhCAeY4BiFMxQzFGU4DYsEY85CECK-oaKeuYiYKb0-8_3_OQ6yBKdnNS14bfwXbgiR_An6p4AQEF2e6bmPqqJdGxCiWhhrXtVYYWs-X_ivDAgJ3XUFPj1wCVsj5Bq6HzU_512vET5yZpU2Z62u55__xkJv9OOc_C8AAP__rw8F5g">