[clang] [clang][AST] Fix generation with multiple external sources (PR #219189)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 27 04:38:40 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Jonas Hahnfeld (hahnjo)
<details>
<summary>Changes</summary>
`ExternalASTSource::incrementGeneration` returns the `OldGeneration`, which must be taken into account in case it is delegated to the topmost external source.
This obsoletes a long-standing downstream patch in Cling that was previously submitted in https://reviews.llvm.org/D39714.
---
Full diff: https://github.com/llvm/llvm-project/pull/219189.diff
1 Files Affected:
- (modified) clang/lib/AST/ExternalASTSource.cpp (+9-8)
``````````diff
diff --git a/clang/lib/AST/ExternalASTSource.cpp b/clang/lib/AST/ExternalASTSource.cpp
index e8c1004089713..1888ffd6bd27c 100644
--- a/clang/lib/AST/ExternalASTSource.cpp
+++ b/clang/lib/AST/ExternalASTSource.cpp
@@ -118,19 +118,20 @@ void ExternalASTSource::FindExternalLexicalDecls(
void ExternalASTSource::getMemoryBufferSizes(MemoryBufferSizes &sizes) const {}
uint32_t ExternalASTSource::incrementGeneration(ASTContext &C) {
- uint32_t OldGeneration = CurrentGeneration;
-
// Make sure the generation of the topmost external source for the context is
// incremented. That might not be us.
auto *P = C.getExternalSource();
- if (P && P != this)
+ if (P && P != this) {
+ // The call itself returns the OldGeneration of the topmost external source.
CurrentGeneration = P->incrementGeneration(C);
- else {
- // FIXME: Only bump the generation counter if the current generation number
- // has been observed?
- if (!++CurrentGeneration)
- llvm::reportFatalUsageError("generation counter overflowed");
}
+ uint32_t OldGeneration = CurrentGeneration;
+
+ // FIXME: Only bump the generation counter if the current generation number
+ // has been observed?
+ if (!++CurrentGeneration)
+ llvm::reportFatalUsageError("generation counter overflowed");
+
return OldGeneration;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/219189
More information about the cfe-commits
mailing list