[clang] nonblocking/nonallocating attributes: 2nd pass caller/callee analysis (PR #99656)
Doug Wyatt via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 4 12:11:52 PDT 2024
================
@@ -8392,6 +8397,20 @@ void ASTReader::InitializeSema(Sema &S) {
NewOverrides.applyOverrides(SemaObj->getLangOpts());
}
+ if (!DeclsWithEffectsToVerify.empty()) {
+ for (GlobalDeclID ID : DeclsWithEffectsToVerify) {
+ Decl *D = GetDecl(ID);
+ FunctionEffectsRef FX;
+ if (auto *FD = dyn_cast<FunctionDecl>(D))
+ FX = FD->getFunctionEffects();
+ else if (auto *BD = dyn_cast<BlockDecl>(D))
+ FX = BD->getFunctionEffects();
----------------
dougsonos wrote:
Yeah, it's guarding against a pathological case where a function or block in `DeclsWithEffectsToVerify` turns out to have no effects. It happens that (despite comments) `addDeclWithEffects()` will still guard against this, so OK.
https://github.com/llvm/llvm-project/pull/99656
More information about the cfe-commits
mailing list