[PATCH] D121927: [Clang] Work with multiple pragmas weak before definition

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 22 08:52:47 PDT 2022


aaron.ballman added a comment.

Can you also add a release note for the fix?



================
Comment at: clang/include/clang/Sema/Sema.h:1075-1077
   /// WeakUndeclaredIdentifiers - Identifiers contained in
   /// \#pragma weak before declared. rare. may alias another
   /// identifier, declared or undeclared
----------------
Should probably update this comment as the type just got much weirder than before.


================
Comment at: clang/include/clang/Sema/Weak.h:18-19
 #include "clang/Basic/SourceLocation.h"
 
+#include "llvm/ADT/DenseMapInfo.h"
+
----------------



================
Comment at: clang/include/clang/Sema/Weak.h:27-30
   IdentifierInfo *alias;  // alias (optional)
   SourceLocation loc;     // for diagnostics
-  bool used;              // identifier later declared?
 public:
+  WeakInfo() : alias(nullptr), loc(SourceLocation()) {}
----------------



================
Comment at: clang/include/clang/Sema/Weak.h:33
+      : alias(Alias), loc(Loc) {}
+  inline IdentifierInfo *getAlias() const { return alias; }
   inline SourceLocation getLocation() const { return loc; }
----------------
Would it be onerous to make the return type be `const IdentifierInfo *` given that the function is `const`? (If it is, just ignore the suggestion -- I love adding const correctness where we can get it basically for free.)


================
Comment at: clang/include/clang/Sema/Weak.h:62
+        return false;
+      return LHS.getAlias()->getName() == RHS.getAlias()->getName();
+    }
----------------
Previously we cared about the source locations being the same. But... is there a situation where the aliases are the same but the source locations are different? I can't think of any, so perhaps that's worth an assert that the locations match?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121927/new/

https://reviews.llvm.org/D121927



More information about the cfe-commits mailing list