[clang] Diagnose problematic uses of constructor/destructor attribute (PR #67360)

Shafik Yaghmour via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 25 13:33:10 PDT 2023


================
@@ -2352,26 +2352,61 @@ static void handleUnusedAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
   D->addAttr(::new (S.Context) UnusedAttr(S.Context, AL));
 }
 
-static void handleConstructorAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
-  uint32_t priority = ConstructorAttr::DefaultPriority;
+static bool diagnoseInvalidPriority(Sema &S, uint32_t Priority,
+                                    const ParsedAttr &A,
+                                    SourceLocation PriorityLoc) {
+  // Only perform the priority check if the attribute is outside of a system
+  // header. Values <= 100 are reserved for the implementation, and libc++
+  // benefits from being able to specify values in that range.
+  if ((Priority < 101 || Priority > 65535) &&
----------------
shafik wrote:

So `101` and `65535` are "magic" numbers that are used multiple times, can we name them please.

https://github.com/llvm/llvm-project/pull/67360


More information about the cfe-commits mailing list