summaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaFunctionEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaFunctionEffects.cpp')
-rw-r--r--clang/lib/Sema/SemaFunctionEffects.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaFunctionEffects.cpp b/clang/lib/Sema/SemaFunctionEffects.cpp
index 0fb18d207a50..0ac5de29f66a 100644
--- a/clang/lib/Sema/SemaFunctionEffects.cpp
+++ b/clang/lib/Sema/SemaFunctionEffects.cpp
@@ -1048,15 +1048,14 @@ private:
}
void checkIndirectCall(CallExpr *Call, QualType CalleeType) {
- auto *FPT =
- CalleeType->getAs<FunctionProtoType>(); // Null if FunctionType.
FunctionEffectKindSet CalleeEffects;
- if (FPT)
- CalleeEffects.insert(FPT->getFunctionEffects());
+ if (FunctionEffectsRef Effects = FunctionEffectsRef::get(CalleeType);
+ !Effects.empty())
+ CalleeEffects.insert(Effects);
auto Check1Effect = [&](FunctionEffect Effect, bool Inferring) {
- if (FPT == nullptr || Effect.shouldDiagnoseFunctionCall(
- /*direct=*/false, CalleeEffects))
+ if (Effect.shouldDiagnoseFunctionCall(
+ /*direct=*/false, CalleeEffects))
addViolation(Inferring, Effect, ViolationID::CallsExprWithoutEffect,
Call->getBeginLoc());
};