hahnjo wrote: > > > The reduction has been crawling for 5 days now. The input is down to > > > 275MB, but the progress has slowed down a lot. > > > > > > Ouch... I don't know if it would already be possible to share it (offline > > with me only if needed) or does it still contain Google-internal code? Then > > I could at least have a look with a debugger and see if I can "guess" what > > is happening > > It's all internal code, so sharing it in any way wouldn't be possible. But if > you have any ideas of how to stuff Clang with debug logs and/or assertions to > make the issue easier to diagnose, I could run Clang and send you logs.
Not really without further understanding what is going wrong under which circumstances... Some pointers (not sure how much time you would be able to spend on your side debugging the problem): 1. As a first matter of action, `ASTContext::getASTRecordLayout` completes the type. This should trigger template loading which is more "lazy" after these fixes. https://github.com/llvm/llvm-project/blob/bba40ab4bd60e636e77362c46c181eafd377f541/clang/lib/AST/RecordLayoutBuilder.cpp#L3371-L3379 2. One thing that could happen is that deserialization triggers merging of declarations and another one has the actual definition attached (redecl chains are a bit black magic for me). 3. Another possibility is that the forward declaration is local and not external, thus `D->hasExternalLexicalStorage()` returns `false` and we skip the call to `CompleteType`. We might try changing that condition to `getExternalSource() && !D->getDefinition()`... 4. Finally it would be interesting to know if what type of template class (?) we are dealing with: implicit specialization, explicit, involving partial specializations? In the past, the "triggering" commit was 3a272ba3e512218976660912ef9354ff5576c95d if you can maybe see if reverting that one avoids the problems (or in general which of the four changes does)? > Meanwhile, CVise made some progress (but not much). The input is down to > 250MB and ~12.5K files. Ok, if possible maybe you can keep it running in parallel, we will still need a reproducer as a regression test later on. https://github.com/llvm/llvm-project/pull/133057 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
