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

    <tr>
        <th>Summary</th>
        <td>
            opt: ../lib/Analysis/MemorySSA.cpp:1766: [...] Assertion `Def == DefCheck && (Def || Use == UseCheck) && "Invalid template"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    llvm commit: 71e4e35581b
Reproduce with:```opt -passes="require<globals-aa>,cgscc(instcombine),function(loop-mssa(loop-simplifycfg)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>))" bbi-75359.ll -o /dev/null```
Result:
```
opt: ../lib/Analysis/MemorySSA.cpp:1767: llvm::MemoryUseOrDef *llvm::MemorySSA::createNewAccess(llvm::Instruction *, AliasAnalysisType *, const llvm::MemoryUseOrDef *) [AliasAnalysisType = llvm::AAResults]: Assertion `Def == DefCheck && (Def || Use == UseCheck) && "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=require<globals-aa>,cgscc(instcombine),function(loop-mssa(loop-simplifycfg)),recompute-globalsaa,function(loop-mssa(simple-loop-unswitch<nontrivial>)) /home/uabelho/bbi-75359.ll -o /dev/null
 #0 0x0000000002e59633 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2e59633)
 #1 0x0000000002e5734e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2e5734e)
 #2 0x0000000002e599b6 SignalHandler(int) (build-all/bin/opt+0x2e599b6)
 #3 0x00007f2c71336630 __restore_rt (/lib64/libpthread.so.0+0xf630)
 #4 0x00007f2c6ea7d387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f2c6ea7ea78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f2c6ea761a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f2c6ea76252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000001df37e2 llvm::MemoryUseOrDef* llvm::MemorySSA::createNewAccess<llvm::AAResults>(llvm::Instruction*, llvm::AAResults*, llvm::MemoryUseOrDef const*) (build-all/bin/opt+0x1df37e2)
 #9 0x0000000001df311d llvm::MemorySSA::createDefinedAccess(llvm::Instruction*, llvm::MemoryAccess*, llvm::MemoryUseOrDef const*, bool) (build-all/bin/opt+0x1df311d)
#10 0x0000000001e0a9f4 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+0x1e0a9f4)
#11 0x0000000001e0bbef 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+0x1e0bbef)
#12 0x0000000002d0fe42 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)>) (build-all/bin/opt+0x2d0fe42)
#13 0x0000000002d061c3 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)>) (build-all/bin/opt+0x2d061c3)
#14 0x0000000002d01dc9 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)>) (build-all/bin/opt+0x2d01dc9)
#15 0x0000000002cffb75 llvm::SimpleLoopUnswitchPass::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (build-all/bin/opt+0x2cffb75)
#16 0x00000000031cf6fd 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&) (build-all/bin/opt+0x31cf6fd)
#17 0x00000000038246af llvm::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+0x38246af)
#18 0x00000000038243b3 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+0x38243b3)
#19 0x00000000038239e8 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+0x38239e8)
#20 0x000000000319c1fd 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&) (build-all/bin/opt+0x319c1fd)
#21 0x000000000382551d llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x382551d)
#22 0x00000000031cddad llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x31cddad)
#23 0x00000000026689bc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x26689bc)
#24 0x0000000000af02bd 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>&) (build-all/bin/opt+0xaf02bd)
#25 0x000000000266cc9e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x266cc9e)
#26 0x0000000000af009d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0xaf009d)
#27 0x0000000002667c6c llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x2667c6c)
#28 0x0000000000721cd9 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (build-all/bin/opt+0x721cd9)
#29 0x00000000007311c1 main (build-all/bin/opt+0x7311c1)
#30 0x00007f2c6ea69555 __libc_start_main (/lib64/libc.so.6+0x22555)
#31 0x000000000071a940 _start (build-all/bin/opt+0x71a940)
Abort
```
[bbi-75359.ll.gz](https://github.com/llvm/llvm-project/files/9907891/bbi-75359.ll.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW2132rgS_jXkiw8cv2Abf-ADIcnZnG1aTki7HzmyLIO2suUryWlzf_0d-YVaxgSy2-5tsu0hYKyZ0cwzj0YSVmOePM0Ze8wszLOMqpG3sEKHTInn-zMnHtlXI3txTwrBkxIT6wtVOxAZBXb94oWyxgWSksiRdzVyXUH-U1JBRt5yy3iMmBwjNPKuR-4SbyXGI3dGc6mgr5jmZORG0JCWOVaU59DGOC_GmZSovZY0KxhNn3C6rYS1vCCgXpSKjJsuoIejVioDZFzdKnMJ_mMIYJnzXAn6SBGrnKstu1Yc03Hoe340Ycwac2vk3iTkEd7zkrF90C0osmQar_prrxWA0VBOJqDMaAzvixyxJ0klXN6RjIun9XoxwUUBYk4YhFpa50Eb9Ba1xEdJPogrkoIfi34baNdfsSBIkffkywJjIqWOfy96C1iLssJF2wCYrAWjSLa-PDwVpG3AHISfdQFAskb-5YAF76qjuGigkSP_Ske1AHaI2oXArkwBU0ADLpc7gj-D6QBe8DGrWsMlvCzouBWEy0qw6r-VdW_zR8RoYikCGQYE4NbIDa0UUUaSSZ2F1bvrxfrakmUM1LaQFZdbS5CCC2Upbu2UKqT22b2B1xaoXcYT4JZOmY6m_hgD9_8kWMFXKmVJdAItlCcWzTErE2KpHbGwQHJnxQh_VgJh0nS_VnDDSsqs2NPEhqZoJfhWoMxCYltmJFfaCfCNsmSMgGfuDQwOeDcH1-sdWXoY7XgGTt2UKCZsx3WIzw61Ciu459mW_dVu_7nEjwLP63BNPsn6YiVoriq8H3QCjFEg0JcNh4FAUFbRZwmpU7Vfs0HUR-6l_bXpTIew98bpeRN6UzLkzX2Zr-kWhshvQBRGhB6V53So7Rkduv3woziwDNNV3s-LBnQN415jPExdHDqeFwQA92YjiFRckA0MksptXb-Caf1ZqB3AmEwkn9iV3RR0DKPTjtGAoDDxZqElENXDuW8NaztBZccLQM4w5PcMwWtmoZgPudU1FIKcYSjoGQocFECYqCpLG10vNjE64Z6bgpJhNexbdX33hAmQMEzMusl1ktQLiXu0AEP9PWg7Ogd4y6FyrMfj8OTQTAFDSv2W3rRQzRrt3PAcAZv4DACiPgCOk5wKEjqF-pY8P9kd8bpVOjekpRVzzs4KDTzfh6YLhVG3HGKjKJ0OhfaxSCAo0UTIeE7AD5hdE_DEDO8SSYovGdfzYC-AZ5o-IVaSO1QYlKhuGnF-a_uDoKqEfqb59tNvw8aWPE_p9myT-7K4zpBQdzC_fAXdFOYXmM2urfavUQ5MZdBh7Irk8iCKGsPVjp6T7WlpirQWb_OUP2v1kdOknmY72glRUDZMSytExV_0rwagCf08ytWMMijn9CgXx0DmU5Qrqy83XCw195J3MJsbrNM3KmbJ-9WHIylaCIGe7qFEdaM3OdkH8JXS8tzcaOiN3JjzeGKnZOpa7arp_X7JpNe0giK9Iuwn4QB1o9ydk5EKi6Fk3H4C5BKqLVXDoW_timc0R7AmeBCEHLRq5wbVYN0PK19tdYnw7lCxXVfCgkM7qgdaBWyFcYv1yahqbBbNYrMf2hojhsT1I2flM_NCZ1D0BY44eSI3a8hnvr2vSVB5dmJ1VjPCoIzXo0zgYG9PmUtYo-2TdtqfH5TBziqh1_IAWxuiYMDmMuUiG7T-K__d_Ov0Gvmf9vLvJDja53-wTv_MaT-e1VdBA9ixp5SRdZnBXPFUx9VfhOm57kbv0kmOh0X-MTJprhhk8g0y4TSNQ7_bRbWX171_bAi2QrKZHUV5RoFpfw66QznaEjGQmj7zYK-eJ0gkrWaHUvul0Nkapuzqbp_G4DRaNRgGWkEXLc_BaZB29yXd1Z_G6Y4nhJ0I-QjCPZIR2JI-kiZCIn8wxt8HYLD0b-BJQwODJ6HBk5k7DVB3xf2hqqHIpMZhkmGN2WnWfDoLnJ-fDmsoW4zUlWTAOamS-kaZUyiam0KZQfSHGax3MNE_q79SWLohJyRFoLWBwkEUecthW52_Y_XhFxP-TUx4TZPCslea6023fmaD9hvvUxNHPS8YE8esP3F4sfdGJ4E_qNrxUmlb72HTuqofZ73lhUKdTiPfUS_fXkRmbzTfbzy1OnPd1Lq2uVeIsPO39wpvgQ6_NjavhtQ1Zw1SO7165fvGg7mb5neMB67d0nRdJKhQXAwDdrM_QPAC0PZKDRinh6Z20ojC7W3jkwS9bGh-c3x5VvTfi_Sd2K2jNPxHUK1BM1A1f5cOglkU4zOK1zCWrwKFJkgDBePXWRultht_D279OPTeHDdrzI2k-D1qYhx1j-dAEkpGHnjb0cnCVSu8KIhG5WxiaReNGII-sezoZcRqnV6eGfn3IsY-8uO0-NF41mgZcIY9SoQ4OKdaDYH4kwffBGdEb-wz7dCFch51-gYXNQArWhBWHRrsuNt56nDIpCMPfu4Q3lV2FkOt72gsmocnt1nBDqU4Zx9KVZTqhrIBI3-r-Ug4g8-Svsn26-ageAUhK7c0P5CH3GyUfoBVfavd-53myXNSn4igKSWiles_CHv-8wRJagoYHIlMjniOgx0rQzQ_YakS7Fran9VsjsQFke_71majj8FtpEJCbVqzxw_JwSrOeBZjHrm0QwdFU9uqzZ1wsBLd21rok4ODR7VH_mX3MOpk-199cNmdvfh4sH5CqE8HR5EdziKnd8hV222duSBzB4arOwOx4CKZe0nkRehCUcXI_KVHxwMtDUFMQMO_-v8ct74oBZv_9fPU_ix0oovd3J6mU-wFOMHEiXGE7Njz0XSGgGx-FGLvgunzw3IO0UKoF3Tu2q7rOLZjh9OZF0wSP8KzdGqTeJaAfjCCS-Acm-iOJ1xsL0T1nx3GcbmV0MioVPJbIwxkus0Jae2jUu24mGf0M9KnlllG8ovK53nl8P8Am8shvA">