[Macros] Private discriminators for outermost-private MacroExpansionDecl (#64813)

Add a private discriminator to the mangling of an outermost-private `MacroExpansionDecl` so that declaration macros in different files won't have colliding macro expansion buffer names.

rdar://107462515
This commit is contained in:
Richard Wei
2023-03-31 20:36:29 -07:00
committed by GitHub
parent 77bd312a88
commit eb8e984b97
24 changed files with 84 additions and 49 deletions

View File

@@ -301,8 +301,8 @@ private:
llvm::DenseMap<uint32_t,
std::unique_ptr<SerializedDeclMembersTable>> DeclMembersTables;
llvm::DenseMap<const ValueDecl *, Identifier> PrivateDiscriminatorsByValue;
llvm::DenseMap<const ValueDecl *, StringRef> FilenamesForPrivateValues;
llvm::DenseMap<const Decl *, Identifier> PrivateDiscriminatorsByValue;
llvm::DenseMap<const Decl *, StringRef> FilenamesForPrivateValues;
TinyPtrVector<Decl *> ImportDecls;
@@ -884,7 +884,7 @@ public:
Optional<StringRef> getGroupNameByUSR(StringRef USR) const;
Optional<ExternalSourceLocs::RawLocs>
getExternalRawLocsForDecl(const Decl *D) const;
Identifier getDiscriminatorForPrivateValue(const ValueDecl *D);
Identifier getDiscriminatorForPrivateDecl(const Decl *D);
Optional<Fingerprint> loadFingerprint(const IterableDeclContext *IDC) const;
void collectBasicSourceFileInfo(
llvm::function_ref<void(const BasicSourceFileInfo &)> callback) const;