[llvm] [CGSCC] Fix compile time blowup with large RefSCCs (PR #94815)

Lei Wang via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 2 13:03:22 PDT 2024


wlei-llvm wrote:

Hi @aeubanks , some of our services is broken with below assertion and we bisected to this commit, could you take a look? I think you probably needs a reduced repro from me, I can work on that, but just post here first in case you find some thing obvious to fix. Thanks in advance!

```
clang++: /home/wlei/local/upstream/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:1175: LazyCallGraph::SCC &updateCGAndAnalysisManagerForPass(llvm::LazyCallGraph &, LazyCallGraph::SCC &, LazyCallGraph::Node &, llvm::CGSCCAnalysisManager &, llvm::CGSCCUpdateResult &, llvm::FunctionAnalysisManager &, bool): Assertion `!UR.InvalidatedRefSCCs.count(RC) && "Invalidated the current RefSCC!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /home/wlei/local/upstream/llvm-build/bin/clang++ @/tmp/fbcc.89nih15w/compiler.argsfile
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x00007f650c9fe948 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:13
 #1 0x00007f650c9fca20 llvm::sys::RunSignalHandlers() /home/wlei/local/upstream/llvm-project/llvm/lib/Support/Signals.cpp:106:18
 #2 0x00007f650c943dd8 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
 #3 0x00007f650c943dd8 CrashRecoverySignalHandler(int) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
 #4 0x00007f650c03e6f0 __restore_rt (/lib64/libc.so.6+0x3e6f0)
 #5 0x00007f650c08b94c __pthread_kill_implementation (/lib64/libc.so.6+0x8b94c)
 #6 0x00007f650c03e646 gsignal (/lib64/libc.so.6+0x3e646)
 #7 0x00007f650c0287f3 abort (/lib64/libc.so.6+0x287f3)
 #8 0x00007f650c02871b _nl_load_domain.cold (/lib64/libc.so.6+0x2871b)
 #9 0x00007f650c037386 (/lib64/libc.so.6+0x37386)
#10 0x00007f650d50202e updateCGAndAnalysisManagerForPass(llvm::LazyCallGraph&, llvm::LazyCallGraph::SCC&, llvm::LazyCallGraph::Node&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::CGSCCUpdateResult&, llvm::AnalysisManager<llvm::Function>&, bool) /home/wlei/local/upstream/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:1176:3
#11 0x00007f650d4fdef4 llvm::updateCGAndAnalysisManagerForFunctionPass(llvm::LazyCallGraph&, llvm::LazyCallGraph::SCC&, llvm::LazyCallGraph::Node&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::CGSCCUpdateResult&, llvm::AnalysisManager<llvm::Function>&) /home/wlei/local/upstream/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:1190:10
#12 0x00007f650d4fdef4 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/wlei/local/upstream/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:568:19
#13 0x00007f650c37bc4d llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/wlei/local/upstream/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:5
#14 0x00007f650d4f970b llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) /home/wlei/local/upstream/llvm-project/llvm/lib/Analysis/CGSCCPassManager.cpp:90:12
... 
```

https://github.com/llvm/llvm-project/pull/94815


More information about the llvm-commits mailing list