mikaelholmen wrote:

> Hi @aeubanks
> 
> The following starts crashing with this patch:
> 
> ```
> opt -passes="require<no-op-loop>" require.ll -o /dev/null
> ```
> 
> It fails with
> 
> ```
> opt: [...]/llvm/lib/Transforms/Scalar/LoopPassManager.cpp:266: auto 
> llvm::FunctionToLoopPassAdaptor::run(Function &, FunctionAnalysisManager 
> &)::(anonymous class)::operator()(StringRef, Any) const: Assertion 
> `L->isRecursivelyLCSSAForm(LAR.DT, LI) && "Loops must remain in LCSSA form!"' 
> failed.
> PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ 
> and include the crash backtrace and instructions to reproduce the bug.
> Stack dump:
> 0.    Program arguments: build-all/bin/opt -passes=require<no-op-loop> 
> require.ll -o /dev/null
> 1.    Running pass "function(loop(require<no-op-loop>))" on module 
> "require.ll"
> 2.    Running pass "loop(require<no-op-loop>)" on function "foo"
>  #0 0x000056123edef266 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
> (build-all/bin/opt+0x5209266)
>  #1 0x000056123edebed1 llvm::sys::RunSignalHandlers() 
> (build-all/bin/opt+0x5205ed1)
>  #2 0x000056123edf04b9 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
>  #3 0x00007f9e8757e990 __restore_rt (/lib64/libpthread.so.0+0x12990)
>  #4 0x00007f9e84f1e5af raise (/lib64/libc.so.6+0x4e5af)
>  #5 0x00007f9e84ef1ee5 abort (/lib64/libc.so.6+0x21ee5)
>  #6 0x00007f9e84ef1db9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21db9)
>  #7 0x00007f9e84f16f06 (/lib64/libc.so.6+0x46f06)
>  #8 0x000056124068f773 (build-all/bin/opt+0x6aa9773)
>  #9 0x000056124068eebc bool 
> llvm::PassInstrumentation::runBeforePass<llvm::Loop, 
> llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, 
> llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, 
> llvm::LPMUpdater&>>(llvm::detail::PassConcept<llvm::Loop, 
> llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, 
> llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&, llvm::Loop 
> const&) const LoopPassManager.cpp:0:0
> #10 0x000056124068d46d 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+0x6aa746d)
> #11 0x000056124068d0d3 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+0x6aa70d3)
> #12 0x000056124068c5d4 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+0x6aa65d4)
> #13 0x000056124036754d llvm::detail::PassModel<llvm::Loop, 
> llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, 
> llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, 
> llvm::LPMUpdater&>, llvm::AnalysisManager<llvm::Loop, 
> llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, 
> llvm::LPMUpdater&>::run(llvm::Loop&, llvm::AnalysisManager<llvm::Loop, 
> llvm::LoopStandardAnalysisResults&>&, llvm::LoopStandardAnalysisResults&, 
> llvm::LPMUpdater&) PassBuilderPipelines.cpp:0:0
> #14 0x000056124068e3a0 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, 
> llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x6aa83a0)
> #15 0x000056124036a0cd llvm::detail::PassModel<llvm::Function, 
> llvm::FunctionToLoopPassAdaptor, 
> llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, 
> llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
> #16 0x000056123f024595 llvm::PassManager<llvm::Function, 
> llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, 
> llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x543e595)
> #17 0x000056124036bdad llvm::detail::PassModel<llvm::Function, 
> llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, 
> llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, 
> llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
> #18 0x000056123f028e3e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, 
> llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x5442e3e)
> #19 0x00005612402f91bd llvm::detail::PassModel<llvm::Module, 
> llvm::ModuleToFunctionPassAdaptor, 
> llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, 
> llvm::AnalysisManager<llvm::Module>&) NewPMDriver.cpp:0:0
> #20 0x000056123f023295 llvm::PassManager<llvm::Module, 
> llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, 
> llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x543d295)
> #21 0x00005612402f16d5 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, 
> llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, 
> llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, 
> llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void 
> (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, 
> llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool, bool) 
> (build-all/bin/opt+0x670b6d5)
> #22 0x000056123ed8daf0 optMain (build-all/bin/opt+0x51a7af0)
> #23 0x00007f9e84f0a865 __libc_start_main (/lib64/libc.so.6+0x3a865)
> #24 0x000056123ed8b06e _start (build-all/bin/opt+0x51a506e)
> Abort (core dumped)
> ```
> 
> Is this as expected?
> 
> [require.ll.gz](https://github.com/user-attachments/files/27470992/require.ll.gz)
> 
> https://godbolt.org/z/6fsYKv7ej

It crashes also with
```
opt -passes="loop(invalidate<all>)" require.ll -o /dev/null
```
https://godbolt.org/z/Te7eThfbo

https://github.com/llvm/llvm-project/pull/192120
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to