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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `OuterLoop->isLCSSAForm(*DT) && "Outer loop not left in LCSSA form after loop interchange!"' 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: df4878d28d3
Reproduce with: ```opt -passes="loop-interchange" -o /dev/null bbi-72571.ll```
[bbi-72571.ll.gz](https://github.com/llvm/llvm-project/files/9336057/bbi-72571.ll.gz)

Result:
```
opt: ../lib/Transforms/Scalar/LoopInterchange.cpp:578: bool (anonymous namespace)::LoopInterchange::processLoop(llvm::Loop *, llvm::Loop *, unsigned int, unsigned int, std::vector<std::vector<char> > &, const DenseMap<const llvm::Loop *, unsigned int> &): Assertion `OuterLoop->isLCSSAForm(*DT) && "Outer loop not left in LCSSA form after loop interchange!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../main-github/llvm/build-all/bin/opt -passes=loop-interchange -o /dev/null bbi-72571.ll
 #0 0x0000000002d35743 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../main-github/llvm/build-all/bin/opt+0x2d35743)
 #1 0x0000000002d3345e llvm::sys::RunSignalHandlers() (../../main-github/llvm/build-all/bin/opt+0x2d3345e)
 #2 0x0000000002d35ac6 SignalHandler(int) (../../main-github/llvm/build-all/bin/opt+0x2d35ac6)
 #3 0x00007f37f5115630 __restore_rt (/lib64/libpthread.so.0+0xf630)
 #4 0x00007f37f285c387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f37f285da78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f37f28551a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f37f2855252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000002aaab00 (anonymous namespace)::LoopInterchange::processLoopList(llvm::SmallVectorImpl<llvm::Loop*>&) (../../main-github/llvm/build-all/bin/opt+0x2aaab00)
 #9 0x0000000002aa6f45 llvm::LoopInterchangePass::run(llvm::LoopNest&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (../../main-github/llvm/build-all/bin/opt+0x2aa6f45)
#10 0x00000000030aa5cd llvm::detail::PassModel<llvm::LoopNest, llvm::LoopInterchangePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::run(llvm::LoopNest&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (../../main-github/llvm/build-all/bin/opt+0x30aa5cd)
#11 0x000000000369c04c llvm::Optional<llvm::PreservedAnalyses> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runSinglePass<llvm::LoopNest, std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > > >(llvm::LoopNest&, std::unique_ptr<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>, std::default_delete<llvm::detail::PassConcept<llvm::LoopNest, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> > >&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&, llvm::PassInstrumentation&) (../../main-github/llvm/build-all/bin/opt+0x369c04c)
#12 0x000000000369b3d3 llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&>::runWithLoopNestPasses(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&) (../../main-github/llvm/build-all/bin/opt+0x369b3d3)
#13 0x000000000369afb1 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&) (../../main-github/llvm/build-all/bin/opt+0x369afb1)
#14 0x00000000030664fd 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&) (../../main-github/llvm/build-all/bin/opt+0x30664fd)
#15 0x000000000369ce06 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x369ce06)
#16 0x00000000030976ad llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x30976ad)
#17 0x0000000002527571 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x2527571)
#18 0x0000000000abf5cd 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>&) (../../main-github/llvm/build-all/bin/opt+0xabf5cd)
#19 0x000000000252b97a llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x252b97a)
#20 0x0000000000abf3ad llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0xabf3ad)
#21 0x0000000002526714 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x2526714)
#22 0x000000000071cb80 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) (../../main-github/llvm/build-all/bin/opt+0x71cb80)
#23 0x000000000072f034 main (../../main-github/llvm/build-all/bin/opt+0x72f034)
#24 0x00007f37f2848555 __libc_start_main (/lib64/libc.so.6+0x22555)
#25 0x0000000000715180 _start (../../main-github/llvm/build-all/bin/opt+0x715180)
Abort
```
Starts failing with commit b941857b40e:
```
    [LoopInterchange] New cost model for loop interchange
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltz2jgU_jXwooHxTbZ54IHmMpvZpGVKtvvIyLYM3hrJK8npZn_9HtmGWMZpQqGzuZQBDLbO7TvfOfJFEU_up3l-t0Ex32wyNXBnKEm9MAgTJ0zcgXU-sGafaSF4UsYUfcvUWg8Z-Fb95oVCo4JISeXAPR84Ts55McqYoiJeE7aisAuNOBo4lwm9g29W5jmKomwUODiwx3m-U1XbGuAP7aPj1b8DDHrDtVIFmJiBCnivwI8yGoPP8Ee732xG4OhfNFbwN81y8Mm5nLiub-EAfnX1OpPGZBOkLHMdf7PTdAvi1HGPx9pQFsH3rSBMplxstJFFTHIi4Mc1hH_1EP04LgqQw0GopSPOc0AiJIyz-w0vJWJkQ2VBYqqdAdPurKOg3glRxVRKfQzEq3h3g0EhgHKG-veWTGYrRhMEKen7L1VSC90BalwM3LP9PeAJbC5Q9XF8LRZzJhU6p0zSG1LoMdWOZ_iw1aHDRTPgjVAZZ5pQn0qIWsuNYFAmr88Wi9kl4AsRg6LzW5CpRX3YONVopNmGGAfLNFWgH1VSSKcFkXQ3wuCjDdIDJ0ApAYYk4zq_8-uL2eICyTKCIkAEReUKCVpwoZDi6GDyZVKWFfsQYTruOC8TitSaolgQuUYRib8qAXlvzC8U7EBJuSl2BLTg0GQu-EoQiEWsyg1lSu5IWH1tSMZGtTsPrkRllicjApUFvzMG32aRdiv0ifKsnIEBroWsf6zty0lcHHhuK-PyXtY_5gKUVwHdiorZLcIK8m3JpRKUbBomVTzUiQ1_JKyB88H6p_FlV8_aWbvjrOth2ufs55ItgJwk_w0SlVMhK7Yd7Y82Z_jjdMEjsY8My2DxRFiAasO229gOUjdIsW1jH3K5XAoqob7pEiheBa37mu_V20KtIUfJWPKxVelNQcZQ6rWVOiGO3TBAgmSS7muLtR6_0uP6MM5QhDuKEhKEiES8z622ogDGGYr8jiJsEx_CJFWPWepqX0bkCfecFIQMrUFXq4OdJ1TACENFaOSeEBJZ1rHTwHUmlVFZiw3Q4UvVsq82RQ4t2WzGuhe7F3XrPY5hdQBGhJNOhH7q4c5k0ApmDilp2kHJ9uazj1RH5ptT2gzq5F5m8oYwsqKiJ7ruBAgNiCVEJFvJenqXWnMDwwES5tj5zR9FQpQu2VOgqcF6OBeB1mU0WtciBMdJy35CFXC56bUA5Q1P6H6-axi7MXazYAyYQ0eg4o42CFD5k3NwmgSApl9cqltiTRWDS8Y86PqT2PLilv1PhT77IiZ99nkAJ22tw5pzz8Lu5TNmkbFV3jSkRwpodz5csuzvki4LZQbSLcczzmKqrxaeLMiXC0877ISmBKSW0GSoom89dNT6fK-d_GLFe2TFa5pLzjot-wou0EV1EUl0zz_FfFNPJ8Z843Tmm8hN3Dc6d_wJQG15PK8vrrsN4zXx5Wgu6FQbXHA7XCBpZL9RLrzvzOvEGpn3zCsY3_fSw69g9lvYa2fLG7_aekecryltcB53r7So5bfsX5Ys1vPuLddeazbPElJUN9j78NwOPwjTndBJbvQ0MRhB-mZhTwKfHFbYD3GdPQucU5VMCxr0KIlfAug1pgbogXF3DTsBDp4zj_ZD_RZAajAwQDJuslokSg-9adYP188D970xu06JkbNJh9jRJCAt3yBHZU5v-daPJ5tmLXBQjI3IqWipI2iH6FhdWroHNsxtTGfPBOZUtNoB8zip_me4azANtO0OofwATkWfLuY-jF83Nk3sBjjGpbkV2HEUWi3XIAKNzzwraJ4x87HtQomMrT7TtI-He0HeErGi6obE60rPrO_odRYJIu6vWMqrx1V7ozjPP5WqKNVllvcoOerwI-HMhCD3em87Kw9juz27d3gFYV6uMrY3HnKzVOBY_a927_eMJd8b9YWKLM2o2I7TK0ievz2OQzVDDAq5JoWc1HI9pNUeZ6jSYxjqPF32QowxWi71k9alVESo5dbq489hHZAxlOJOAWAbCqBWdyRQWtPO1Ew_u-5dRLTQpmS18AQ4VS2mapZdoWji2SEOIs-qnvX2SSN4DfCH7pNhfI4-0m-gRyq00dOHXv2yv-ylT-OQTm3ftzB2wsAZJlM3mbgTMlSZyun0JazNGZYin_744hs4R_TC4XqaetROKaV-gq3JxIr9kIaRbUeRQyLguD3MSURzOQV0wT4DNCsV2hd8PsymjuU4VmhjK_Rs2x6HfkwCK01xSCeTxKcDSBpQJh9rP8ZcrIaiWlI3isqVhIN5JpV8OAgdQi-HopU50E9KteZiusm-Epqveb6hbFjZn1b-_wfz_iks">