[clang] nonblocking/nonallocating attributes (was: nolock/noalloc) (PR #84983)
via cfe-commits
cfe-commits at lists.llvm.org
Mon May 27 09:28:17 PDT 2024
================
@@ -7525,25 +7525,21 @@ static Attr *getCCTypeAttr(ASTContext &Ctx, ParsedAttr &Attr) {
std::optional<FunctionEffectMode>
Sema::ActOnEffectExpression(Expr *CondExpr, StringRef AttributeName) {
- auto BadExpr = [&]() {
- Diag(CondExpr->getExprLoc(), diag::err_attribute_argument_type)
- << ("'" + AttributeName.str() + "'") << AANT_ArgumentIntegerConstant
- << CondExpr->getSourceRange();
+ if (DiagnoseUnexpandedParameterPack(CondExpr))
return std::nullopt;
- };
-
- if (CondExpr->isTypeDependent() || CondExpr->isValueDependent()) {
- if (CondExpr->containsUnexpandedParameterPack())
- return BadExpr();
+ if (CondExpr->isTypeDependent() || CondExpr->isValueDependent())
return FunctionEffectMode::Dependent;
- }
std::optional<llvm::APSInt> ConditionValue =
CondExpr->getIntegerConstantExpr(Context);
- if (!ConditionValue)
- return BadExpr();
- return ConditionValue->getExtValue() ? FunctionEffectMode::True
- : FunctionEffectMode::False;
+ if (!ConditionValue) {
+ Diag(CondExpr->getExprLoc(), diag::err_attribute_argument_type)
+ << ("'" + AttributeName.str() + "'") << AANT_ArgumentIntegerConstant
----------------
Sirraide wrote:
I’d include the `''` in the diagnostic template instead of creating a string here.
https://github.com/llvm/llvm-project/pull/84983
More information about the cfe-commits
mailing list