llvm-project icon indicating copy to clipboard operation
llvm-project copied to clipboard

Assertion `OuterLoop->isLCSSAForm(*DT) && "Outer loop not left in LCSSA form after loop interchange!"' failed.

Open mikaelholmen opened this issue 2 years ago • 0 comments

llvm commit: df4878d28d3 Reproduce with: opt -passes="loop-interchange" -o /dev/null bbi-72571.ll 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

mikaelholmen avatar Aug 15 '22 08:08 mikaelholmen