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

    <tr>
        <th>Summary</th>
        <td>
            SROA crash
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    ```llvm
define void @aliveMutateGeneratedTmpFunction.2() {
enter:
  %valptr = alloca i32, align 4
  store i32 0, ptr %valptr, align 4
  %barr = call ptr @llvm.launder.invariant.group.p0(ptr %valptr)
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(inaccessiblemem: readwrite)
declare ptr @llvm.launder.invariant.group.p0(ptr) #0

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(inaccessiblemem: readwrite) }
```

```
regehr@john-home:~/out$ /home/regehr/llvm-project/for-alive/bin/opt -passes=sroa reduced.ll 
WARNING: You're attempting to print out a bitcode file.
This is inadvisable as it may cause display problems. If
you REALLY want to taste LLVM bitcode first-hand, you
can force output with the `-f' option.

opt: /home/regehr/llvm-project/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:668: void {anonymous}::PromoteMem2Reg::run(): Assertion `isAllocaPromotable(AI) && "Cannot promote non-promotable alloca!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/regehr/llvm-project/for-alive/bin/opt -passes=sroa reduced.ll
 #0 0x00007fe5253fe950 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMSupport.so.18git+0x1fe950)
 #1 0x00007fe5253fb95f llvm::sys::RunSignalHandlers() (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMSupport.so.18git+0x1fb95f)
 #2 0x00007fe5253fbab5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fe524a42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fe524a969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007fe524a969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007fe524a969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007fe524a42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007fe524a287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007fe524a2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007fe524a39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00007fe526625b3b (anonymous namespace)::PromoteMem2Reg::run() PromoteMemoryToRegister.cpp:0:0
#12 0x00007fe526625faf llvm::PromoteMemToReg(llvm::ArrayRef<llvm::AllocaInst*>, llvm::DominatorTree&, llvm::AssumptionCache*) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMTransformUtils.so.18git+0x225faf)
#13 0x00007fe526d3f7cd llvm::SROAPass::promoteAllocas(llvm::Function&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMScalarOpts.so.18git+0x33f7cd)
#14 0x00007fe526d5e275 llvm::SROAPass::runImpl(llvm::Function&, llvm::DomTreeUpdater&, llvm::AssumptionCache&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMScalarOpts.so.18git+0x35e275)
#15 0x00007fe526d5f310 llvm::SROAPass::runImpl(llvm::Function&, llvm::DominatorTree&, llvm::AssumptionCache&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMScalarOpts.so.18git+0x35f310)
#16 0x00007fe526d5f6d9 llvm::SROAPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMScalarOpts.so.18git+0x35f6d9)
#17 0x00007fe5286b7d86 llvm::detail::PassModel<llvm::Function, llvm::SROAPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMPasses.so.18git+0xb7d86)
#18 0x00007fe52cb83b01 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>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMAMDGPUCodeGen.so.18git+0x383b01)
#19 0x00007fe525925877 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMCore.so.18git+0x325877)
#20 0x00007fe52cb63296 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMAMDGPUCodeGen.so.18git+0x363296)
#21 0x00007fe5259238f1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/regehr/llvm-project/for-alive/bin/../lib/libLLVMCore.so.18git+0x3238f1)
#22 0x0000555889e2f034 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/home/regehr/llvm-project/for-alive/bin/opt+0x31034)
#23 0x0000555889e1d09c main (/home/regehr/llvm-project/for-alive/bin/opt+0x1f09c)
#24 0x00007fe524a29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#25 0x00007fe524a29e40 call_init ./csu/../csu/libc-start.c:128:20
#26 0x00007fe524a29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#27 0x0000555889e20f95 _start (/home/regehr/llvm-project/for-alive/bin/opt+0x22f95)
Aborted (core dumped)
regehr@john-home:~/out$ 
```

cc @hatsunespica

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWV1z4ygW_TXkhbJLBuvrwQ9K0u5NbTKTSjKzNU8uJK5kZhCoACXtl_3tWyA7ttxOOunOdu1HlztxgHu459zLRSBmrWgUwALF5yi-PGO9W2uzMNDA2pyVmm8WKImGj5SPLYouUVRwqIUC_KgFx2geMSke4aZ3zMFnUGCYA_7QdsteVU5oNSWIZIjkGKXngz0oBwbRYvgLY0TiRyY7ZzCil5hJqSuGBSWIXGAmRaPwfDfUOm3A9-HI9wabnfWJ4YjEJTMDbsWkHAzmgctUsl5xMFOhHpkRTLlpY3TfTbsIkewIOd8hGnCB-PA3Si-3X4af9BzvaOPCOWMRLbDSfuqSVX9hpWsDgJW2G1VhpXv1JBTHtoOql8yxUgJ-ElIacL1RuIVWmw0imVCsqsBaUUpoofWoBhh_MsLBs3McKskMvItjiAuh0SEL5pwRZe_Ahq4gHkrPfwIPvNdzl3UjeceNQ5aiefSnXqvJWreAaPFPRJa6d4jMMSLL0EiW25Fk6TWZdEb_CZVDZFlrMwnZi8iyFMqbdg5POmYtWEQvrdEMG-B9BXwqJR7m_Udx98vVL5-983_oHpHUAGbOQds5oRrsNO6MUA7r3mGGS-EqzQHXQsJ0AHhYC4v9RzH-KGxQi1ksHG7ZBlest4C5sJ1kG9wZ7bWyU3xVD9Yb3eO7T8X19R_4iSnn53PMOsDX17_fHExnrJusmeJ-WWx0PxhXTOFamwq8d13v8JNwa-zWgFESTWpEUqy7sGoPhded82y_LWioEWQpRYnI8sEwZWttWovI8jcnpP99a3SrHdyEjHjQd9AI68BMq65DtEiSzE80VJb0nCmtNq3urc8LWiBa7M3JHTRDm-nVUGG8aWEtmLD-UBIJW4RiMlh5nRHJiqsh6RNEEowIuWBKaeeF9shYaTXpnsdvqxEiM0SIV6dmQgLfqnN7_am4_4RtX7YixLpvsIFOmxCVtXOdLwCILBFZNsKt-3Ja6fZAp7F6wtoevEiYKY6FqmTPIQSnMsyusV96zrBql0f3zq9F3rfdczGNpijKb41uDGsxM03fgnL2bcF752rYVsRQIqIvURRFaQ0xiWkNeRzhQDHEx27sLnhCueD0g2eBSLYfZNjTSltngLUhNBdYKDcEKvse16fT5zyUovRL477vfGSmVk9nWSMcIufRl1lwdl_fEaGzIzZlHten2Nz16l40ism_McUlGLvb5v7NDnt_Rg6TY4dZGeORa6HyBjWHZrtdblH4_wxED4HmbE5iEm3pDI59yZJVMp9Iofovk0b1Q0flPUyCd8Fk5Nx8jJkneV3h1apza1_4V38JKVei7fx2oBwLC9cLoTonEVkeDptWiBbzOaJFmuzx47fg--cNxeSryKmvPLMDNZJTyIdmr8Jl-RFceizuPE1wY0M8AtLwdZcJdmM5dL4YdNqKLz6VmLAQsEnqS-UeOhtDkyytKWalL0MByvEhfKFp8G7mGe8R8q8QZiVeKbmSmvEV1y0TQ1yECnR9c2ubig1ws1nqXdqG3a-haAxIc8iT96VSMHlOJY85WphJQuKSlh7zeZfAirVgu1Ba8jfsF_j1zehgdfjpyfH0NTusC3usADQqboUxbHMHNaIXB41hZ7lS1iFSIPrJ17x976VuhWJOmwcDsK2IB7bW9m3Ypy9YtQYP8JGV53nnDrv2uACRQHwUmFHdSDit04ofOHt_92txy-y2bG732YG9Hcm0e3QOdD-ykFZMMvNr546o0ODpiMp8TCUGksYvUjG9umo7-TKHo4D6UP7WceZPP9-M6E-SIDAcSRAfSVD71fxRErwnp3-WAp7gSIHkWIGE568p8Db2hWJyY4W9YYo1_vx7ccLIl4Gfxjvh-Yj3aIvKkjLlWXJAgINjQm6rHbP2RnOQp2mMiD_rNWq9NWDBPAIfdAH7fWr5z39DGG7DU_Q4BEHgUQRGO3lVZrSMZh8QgTD2Nb7fK_3_c0SLm8vPt79daA6fQR2trRC4UWRHT1hxTuIsTQ843GjeS3jQO399xArOOqfNaTUGg3dpsTX5eCUutIEjAQK_QwFINE7thJL8fcVlx_jijbJ9VG7uZXspM_-TYvFaVgbNR0GZHWUlzerZG-rGqVD870h4Kp29MCPldqeBOI6zLAdSR3R-4LjpQy7eig6kUOOrjntnhGr8ceBELn8lwQMzDbgbVq0DTnGq91qUhpnNlar18DR2PEpr-Wu471sKeQLkh7pfoHPyzBM0kX0j1Fe7h-7cymm9LQHDfH8Xw_XlS6N-ByNqAWY3rvQ97_793amju216zCI6H2UHHWfHjEd5hcMh-genmtVRXo2mOrpgITnPI7xa-cP0yjpm3KpiUq6eT_CV7b--Y9jeYpwymq4RLeJwOZLsZ42PZ4V5FN6wrIQS7nii4atHnwT04dKAeFCyP2GT5BToiMopFifBaZp7t_fY6dF6jeo8xgPqj8aEkDrfH6GKUhsH3INW2kC4noX9IfObLy1efv1RVRjNozVztldgO1Gxof2MLyjPac7OYDFL8jwlNMuys_UiT3OgPCt5PfOEa0hjmsbzmEY1yWIoz8SCRITO_L-Uzkg2ZTCjKQUWRSUhNAY0j6BlQk7DyyRtmrNwR71ISUTjM8lKkDa8OyQkXFFPtJo8Mik4IgTFl2dmEVQs-8aieSSFdXYP5YSTsPCng-F--6w3cvH9l-bBp38FAAD__9us2JM">