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

    <tr>
        <th>Summary</th>
        <td>
            opt: ../lib/Analysis/MemorySSA.cpp:1764: [...] Assertion `Def == DefCheck && "Invalid template"' failed.
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: 8dcb629aa4ccf
Reproduce with: ```opt -passes="scc-oz-module-inliner,function(loop-mssa(no-op-loop)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>))" bbi-76945.ll -S -o /dev/null```
Result:
```
opt: ../lib/Analysis/MemorySSA.cpp:1764: llvm::MemoryUseOrDef *llvm::MemorySSA::createNewAccess(llvm::Instruction *, AliasAnalysisType *, const llvm::MemoryUseOrDef *) [AliasAnalysisType = llvm::AAResults]: Assertion `Def == DefCheck && "Invalid template"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: build-all/bin/opt -passes=scc-oz-module-inliner,function(loop-mssa(no-op-loop)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>)) /home/uabelho/bbi-76945.ll -S -o /dev/null
 #0 0x0000000002ee0823 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2ee0823)
 #1 0x0000000002ede54e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2ede54e)
 #2 0x0000000002ee0ba6 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f8f3b176630 __restore_rt sigaction.c:0:0
 #4 0x00007f8f388bd387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f8f388bea78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f8f388b61a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f8f388b6252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000001e2f7c8 llvm::MemoryUseOrDef* llvm::MemorySSA::createNewAccess<llvm::AAResults>(llvm::Instruction*, llvm::AAResults*, llvm::MemoryUseOrDef const*) (build-all/bin/opt+0x1e2f7c8)
 #9 0x0000000001e2f0cd llvm::MemorySSA::createDefinedAccess(llvm::Instruction*, llvm::MemoryAccess*, llvm::MemoryUseOrDef const*, bool) (build-all/bin/opt+0x1e2f0cd)
#10 0x0000000001e43ac4 llvm::MemorySSAUpdater::cloneUsesAndDefs(llvm::BasicBlock*, llvm::BasicBlock*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>> const&, llvm::SmallDenseMap<llvm::MemoryPhi*, llvm::MemoryAccess*, 4u, llvm::DenseMapInfo<llvm::MemoryPhi*, void>, llvm::detail::DenseMapPair<llvm::MemoryPhi*, llvm::MemoryAccess*>>&, bool) (build-all/bin/opt+0x1e43ac4)
#11 0x0000000001e44cbf llvm::MemorySSAUpdater::updateForClonedLoop(llvm::LoopBlocksRPO const&, llvm::ArrayRef<llvm::BasicBlock*>, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>> const&, bool) (build-all/bin/opt+0x1e44cbf)
#12 0x0000000002d52cc2 unswitchNontrivialInvariants(llvm::Loop&, llvm::Instruction&, llvm::ArrayRef<llvm::Value*>, llvm::IVConditionInfo&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) SimpleLoopUnswitch.cpp:0:0
#13 0x0000000002d48f00 unswitchBestCondition(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) SimpleLoopUnswitch.cpp:0:0
#14 0x0000000002d44bfc unswitchLoop(llvm::Loop&, llvm::DominatorTree&, llvm::LoopInfo&, llvm::AssumptionCache&, llvm::AAResults&, llvm::TargetTransformInfo&, bool, bool, llvm::function_ref<void (bool, bool, llvm::ArrayRef<llvm::Loop*>)>, llvm::ScalarEvolution*, llvm::MemorySSAUpdater*, llvm::ProfileSummaryInfo*, llvm::BlockFrequencyInfo*, llvm::function_ref<void (llvm::Loop&, llvm::StringRef)>) SimpleLoopUnswitch.cpp:0:0
#15 0x0000000002d42ab7 llvm::SimpleLoopUnswitchPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x2d42ab7)
#16 0x000000000325f8bd llvm::detail::PassModel<llvm::Loop, llvm::SimpleLoopUnswitchPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) crtstuff.c:0:0
#17 0x00000000038c5dff std::optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::Loop, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>>(llvm::Loop&, std::unique_ptr<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>>>&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (build-all/bin/opt+0x38c5dff)
#18 0x00000000038c5b23 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithoutLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x38c5b23)
#19 0x00000000038c51c8 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x38c51c8)
#20 0x000000000322c97d llvm::detail::PassModel<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) crtstuff.c:0:0
#21 0x00000000038c6c6d llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x38c6c6d)
#22 0x000000000325df6d llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#23 0x00000000026ea45c llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x26ea45c)
#24 0x0000000000b0be3d 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>&) crtstuff.c:0:0
#25 0x00000000026ee6ee llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x26ee6ee)
#26 0x0000000000b0bc1d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#27 0x00000000026e970c llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x26e970c)
#28 0x0000000000726083 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) (build-all/bin/opt+0x726083)
#29 0x00000000007352a7 main (build-all/bin/opt+0x7352a7)
#30 0x00007f8f388a9555 __libc_start_main (/lib64/libc.so.6+0x22555)
#31 0x000000000071f0f0 _start (build-all/bin/opt+0x71f0f0)
Abort (core dumped)
```
utils/reduce_pipeline.py fails to reduce the pipeline, as did a few of my manual attempts.
[bbi-76945.ll.gz](https://github.com/llvm/llvm-project/files/10245261/bbi-76945.ll.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z2roW_TXKiwbGyPiDhzwQKHM6t2kzJe15ZGR5G3QjSz6SnDTn19-RDRSZz_ak97a5zdChYGmx19pL27K9qTF8KQGuUXSDoukVre1K6euSP1AQKyVKkFeZyp-vhXgsMVNlyS0KxzjNWRaTEaVDxgoUTFEw_giVVnnNAD9xu3KDUBy0L1VZ3KuoMWBQOEWEGMZ66u9eqfJaQI9LwSVoRCZFLZnlSiKSCqWqXmkMRSSVqqeqnvsGkVHzmmhgqqxqC72lUBkVhtLj8w0vKwENQK-W5olbtkLhRCppNX_kVKDwzQaZ4CzjvSQeDaO-ELg3xz2FEZnl8IjITNZCbGlteJtaOFHaj52jqmr06vcRmQmeITIbSyqeDTeIzG6hVPp5Ph_3WVWhcDxI4qEb7cR2gOG4HfHJwAc9hQIjMu4em8_H7UemgVp4D09jxsAYJ8F26FtprK4baRwGIhM8FpyaTSz3zxVsDjAljT0ZAiIjjKKbAwjhdGfieC2NQdHUsRobA7oNIQ4aqHDqZkyhmKyAPWBEYkRijAh5Kx-p4Dm2UFaCWkCEIJLggnIBeb9V9u7dm_H8DTZ1VnKLKc7qJdZQKW2xVXhlbWVcHGSGyGzJ7arO-kyVLg0uwvatV2n1b2AWkRk3pgaXFExljrlkos4B2xVgpqlZ4YyyB6spg_XPzy1lDzivy2qb-qCPgtGdVktNS0z1si5BWhcEzmou8h4VApFZxiUiM39J_LTrwTl_pUpAZFbTzJUEx-DcAmnUwIiEAQ6-BJs_AhCkJNxxiHk27X_uNJe2UfTeSex5V9OnhTJWAy0bg0wwl7YNLT2oKyI3wZf1jzkW22gGfjQ5REM4FM3HWs75UlLxB5W5AO3W0gU_2OB5P0i69DMaYw8akXTNpv3arCtB0PzbAoVroKRIizAbJHEcBnix0GCs0rDQFhu-pE2q-2x_-nB3eppmeZgmWFNu3KJP28oUD9t31jeqHzeUwjhME49Q1AECmqSYZm7NnQRKaJJ6QHEHKB7QGC8WtCkRC7fOFxk9Ex4pBjT2UJMuKonIGQgSEQ8i3U3ZAEiRsPRoMURkv1Yfrcfh5FBpdAvtcKFel-NDk7pHOiW6qeCbOn3Ks2t-ngCjrgABy8-RnELBJeSnTzxHot5MupTSBGdKiYuoBSzfUnPLP_CpDUPKhoeofapyakGvGQol4ZMBM5b5FAqf3g01nN0IxR72CJw49JmKGm5p5Vmi-dLj-fXYn0CbwvjA5fLzH4fBJkoWfHkx5LbYzUuq7W1t4QsKJwUVBpwnm9dmauxPnZdUiClIs8ehVfBuxS_J9bD2h2wQ38pCnUR9VDxv1s3u7Bws5cJHuqNcf2d8rQQt8wv91tjJ89ug47chy4qzfqubDzOlJ854-bvmJL9jOfdFYyvz8e7DkQyNtabPH6HwyPuG7Or3S3ry0sw44b3M-CfmPCKMEbzZCb3fboPcNlRz6jZx3RTsae5Vukvy0ShxKBVvP0-UzLlDatZCF22qSi6pVfpeA-wddcEdnDY2pi4rhzqhbLU_cbNXXOgmULfKGmEbjTdan2XVajNebyC71OaMCqrfPCpRnzgl7CyJ7oAjQZ7JzdxqLpcu1HVMbrvltsBu9Kd12vd3Xs4poe-UYVoEwdYpN2DsNlfnw_hBidvZF3SO3FO9BHuvqTSF0uVB9N9pP5T2YSftw6xg27QfrMk_c7aPJ_OXyP6dVgUXMK_Lkurnlld3t-XOazMNf9Ug2eEh_3UPRR0PEZolu8h7MHfUrE-Aur6gnGxuvdxSSZegD2Ska7i5pTKnOt_M3HHSdrdz8Qx_7N3tNnvx-WvlVgzvlBzvqhWSqEiz_Mj-zul0q3IQZygfUbjjLTCgH2HNEMwP1vhlBHZbodfhE6atsXVRdG9bOEskniVSFuVFgY3NWyjVFEnqm2A_neGb3Ww751wkw8-f-DmXSwFtzTgQ3FanWvK_alhU1ifRXVATJRlU9peVZZdyDgWthV3kIMDCq6a9fR0pA79t8H9kg1-o8k86Vbm9fC5BWrq9hD6zi1ifEbxdRNo9ZWTeA4fXVP__5Halauuw3oOxd-2zpF97N3A239nOIx2X71E33wPvdv1ryvdrT-1g50EEIiEJ_AsCwkbJP70geA12-H318hOZ-sTVCxl0SlPM4l3_zta3I-6Vi8A5c5zTyip9WJvZ9kn-N-iznbTmfX4VuiC9VUg6l-V5EX_bKvwa-OQi9i_l713uxwz3QqKecoF__zgGOozYBRXpsGo_Cd_T93Zajp6JvLupQRZkEL6EiX6YeK_Mg1HHgxDDbt_LbdN1dK82oGdrUTvhmwJeT7nYQi5Ez0Jx10Js8G0W2gQ9uZD5S3ngK_NjDngBOU9lP-lkf5QEl1SgQ3r9z3mes43j5tnGux4MEhIH6e71oK6bnN_xCgSXft_Zzp3_fc8cefhyS9mqwRkfOvqOZ3r9AONtWYn9UUqJD7Wtajvj4gDIPzp8hM7B5zmNJqJecrlXDVVlF1ap9VJrf-9fXOanRn0GzQsOejOu-3Tp9PuZrLc59ZI-8pMeRoQmuKRcnkFqBu4ibfsX1w1ldBRFEV4sBM_Ywliq7WIDe7zFjERR5IEO_PAGRVAEuIU7E2AzdIs13vTdMaWh6USFnb2b34ZcWy4MIjMNec1gUa0N36-em6Zag63C7bGm5bXaLogJpgbnPMcUF_CEVYHLZ1xSWVOBqbVQVtasO2JRdLPbGdpf_o2iKSLpN7fiFlw0nbiDgAwjEg86LacOeEPzKr8O81E4oldwPYiTwSAdBUl0tbpOGEnyLAxoGpKEUEIIgyIGRkZ5OCpidsWvSUDIgAzigfuL-ukwyIM8gogmo-EoTNAwgJJy0XfR9ZVeXjUtwtfRKBrGV4JmIEzTNk-IhCfcHESEoGh6pZt2-V5WLw0aBoIba76iWG4FXH9XXziKbvr9PoqmL9dLfVVrcf39zdKNGP8JAAD__w5q6cI">