================
@@ -173,6 +176,20 @@ static bool isLanguageDefinedBuiltin(const SourceManager 
&SourceMgr,
   return false;
 }
 
+static bool isReservedCXXAttributeName(Preprocessor &PP, IdentifierInfo *II) {
+  const LangOptions &Lang = PP.getLangOpts();
+  if (Lang.CPlusPlus &&
+      hasAttribute(AttributeCommonInfo::Syntax::AS_CXX11, /*Scope*/ nullptr, 
II,
+                   PP.getTargetInfo(), Lang) > 0) {
+    AttributeCommonInfo::Kind AttrKind = AttributeCommonInfo::getParsedKind(
+        II, /*Scope*/ nullptr, AttributeCommonInfo::Syntax::AS_CXX11);
+    return !((AttrKind == AttributeCommonInfo::Kind::AT_Likely ||
+              AttrKind == AttributeCommonInfo::Kind::AT_Unlikely) &&
+             PP.isNextPPTokenLParen());
----------------
a-tarasyuk wrote:

@erichkeane thanks for the feedback. `isNextPPTokenLParen` detects whether the 
definition is function-like, as complete macro information is unavailable at 
this stage.

https://github.com/llvm/llvm-project/blob/d49a2d2bc9c65c787bfa04ac8ece614da48a8cd5/clang/lib/Lex/PPDirectives.cpp#L2938-L2940

I’ve updated the handling of attribute names as follows: if an attribute has 
required parameters, a warning will be triggered only for _function-like_ 
definitions such as `#define assume()`. For attributes with optional parameters 
like `deprecated`, a warning will be issued for both `#define deprecated` and 
`#define deprecated()`. In all other cases, a warning will be triggered for 
_non-function-like_ definitions such as `#define noreturn`.

I decided against using `hasAttribute,` as it involves plugin instance checks 
that don't seem relevant here. I switched to check attribute implementation

https://github.com/llvm/llvm-project/blob/65dc0d44473481d67d34dcffd1037d2f9f0e574b/clang/lib/Basic/Attributes.cpp#L25-L32

 which in this case relies on a single StringSwitch/case with a set of defined 
attributes, and I believe it shouldn't cause performance regression.

I hope that makes sense., if you have any thoughts or suggestions, I’d be 
grateful to hear them. thanks



https://github.com/llvm/llvm-project/pull/106036
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to