r302966 - Remove unused tracking of owning module for MacroInfo objects.
Jordan Rose via cfe-commits
cfe-commits at lists.llvm.org
Mon May 15 10:28:46 PDT 2017
Hi, Richard. Swift was using this information in order to put imported macros in a particular context. It wouldn't surprise me to hear that we were doing it wrong, and that there's a better way to go from a macro back to a module, but is there a recommended replacement?
Thanks,
Jordan
> On May 12, 2017, at 16:40, Richard Smith via cfe-commits <cfe-commits at lists.llvm.org> wrote:
>
> Author: rsmith
> Date: Fri May 12 18:40:52 2017
> New Revision: 302966
>
> URL: http://llvm.org/viewvc/llvm-project?rev=302966&view=rev
> Log:
> Remove unused tracking of owning module for MacroInfo objects.
>
> Modified:
> cfe/trunk/include/clang/Lex/MacroInfo.h
> cfe/trunk/include/clang/Lex/Preprocessor.h
> cfe/trunk/lib/Lex/MacroInfo.cpp
> cfe/trunk/lib/Lex/PPDirectives.cpp
> cfe/trunk/lib/Lex/Preprocessor.cpp
> cfe/trunk/lib/Serialization/ASTReader.cpp
> cfe/trunk/lib/Serialization/ASTWriter.cpp
>
> Modified: cfe/trunk/include/clang/Lex/MacroInfo.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/MacroInfo.h?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Lex/MacroInfo.h (original)
> +++ cfe/trunk/include/clang/Lex/MacroInfo.h Fri May 12 18:40:52 2017
> @@ -105,9 +105,6 @@ class MacroInfo {
> /// \brief Must warn if the macro is unused at the end of translation unit.
> bool IsWarnIfUnused : 1;
>
> - /// \brief Whether this macro info was loaded from an AST file.
> - bool FromASTFile : 1;
> -
> /// \brief Whether this macro was used as header guard.
> bool UsedForHeaderGuard : 1;
>
> @@ -264,34 +261,16 @@ public:
> IsDisabled = true;
> }
>
> - /// \brief Determine whether this macro info came from an AST file (such as
> - /// a precompiled header or module) rather than having been parsed.
> - bool isFromASTFile() const { return FromASTFile; }
> -
> /// \brief Determine whether this macro was used for a header guard.
> bool isUsedForHeaderGuard() const { return UsedForHeaderGuard; }
>
> void setUsedForHeaderGuard(bool Val) { UsedForHeaderGuard = Val; }
>
> - /// \brief Retrieve the global ID of the module that owns this particular
> - /// macro info.
> - unsigned getOwningModuleID() const {
> - if (isFromASTFile())
> - return *(const unsigned *)(this + 1);
> -
> - return 0;
> - }
> -
> void dump() const;
>
> private:
> unsigned getDefinitionLengthSlow(const SourceManager &SM) const;
>
> - void setOwningModuleID(unsigned ID) {
> - assert(isFromASTFile());
> - *(unsigned *)(this + 1) = ID;
> - }
> -
> friend class Preprocessor;
> };
>
>
> Modified: cfe/trunk/include/clang/Lex/Preprocessor.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Lex/Preprocessor.h (original)
> +++ cfe/trunk/include/clang/Lex/Preprocessor.h Fri May 12 18:40:52 2017
> @@ -644,14 +644,6 @@ class Preprocessor {
> /// of that list.
> MacroInfoChain *MIChainHead;
>
> - struct DeserializedMacroInfoChain {
> - MacroInfo MI;
> - unsigned OwningModuleID; // MUST be immediately after the MacroInfo object
> - // so it can be accessed by MacroInfo::getOwningModuleID().
> - DeserializedMacroInfoChain *Next;
> - };
> - DeserializedMacroInfoChain *DeserialMIChainHead;
> -
> void updateOutOfDateIdentifier(IdentifierInfo &II) const;
>
> public:
> @@ -1669,10 +1661,6 @@ public:
> /// \brief Allocate a new MacroInfo object with the provided SourceLocation.
> MacroInfo *AllocateMacroInfo(SourceLocation L);
>
> - /// \brief Allocate a new MacroInfo object loaded from an AST file.
> - MacroInfo *AllocateDeserializedMacroInfo(SourceLocation L,
> - unsigned SubModuleID);
> -
> /// \brief Turn the specified lexer token into a fully checked and spelled
> /// filename, e.g. as an operand of \#include.
> ///
> @@ -1764,9 +1752,6 @@ private:
> /// macro name.
> void updateModuleMacroInfo(const IdentifierInfo *II, ModuleMacroInfo &Info);
>
> - /// \brief Allocate a new MacroInfo object.
> - MacroInfo *AllocateMacroInfo();
> -
> DefMacroDirective *AllocateDefMacroDirective(MacroInfo *MI,
> SourceLocation Loc);
> UndefMacroDirective *AllocateUndefMacroDirective(SourceLocation UndefLoc);
>
> Modified: cfe/trunk/lib/Lex/MacroInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/MacroInfo.cpp?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/MacroInfo.cpp (original)
> +++ cfe/trunk/lib/Lex/MacroInfo.cpp Fri May 12 18:40:52 2017
> @@ -29,7 +29,6 @@ MacroInfo::MacroInfo(SourceLocation DefL
> IsUsed(false),
> IsAllowRedefinitionsWithoutWarning(false),
> IsWarnIfUnused(false),
> - FromASTFile(false),
> UsedForHeaderGuard(false) {
> }
>
> @@ -137,7 +136,6 @@ LLVM_DUMP_METHOD void MacroInfo::dump()
> if (IsAllowRedefinitionsWithoutWarning)
> Out << " allow_redefinitions_without_warning";
> if (IsWarnIfUnused) Out << " warn_if_unused";
> - if (FromASTFile) Out << " imported";
> if (UsedForHeaderGuard) Out << " header_guard";
>
> Out << "\n #define <macro>";
>
> Modified: cfe/trunk/lib/Lex/PPDirectives.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/PPDirectives.cpp (original)
> +++ cfe/trunk/lib/Lex/PPDirectives.cpp Fri May 12 18:40:52 2017
> @@ -54,35 +54,12 @@ using namespace clang;
> // Utility Methods for Preprocessor Directive Handling.
> //===----------------------------------------------------------------------===//
>
> -MacroInfo *Preprocessor::AllocateMacroInfo() {
> - MacroInfoChain *MIChain = BP.Allocate<MacroInfoChain>();
> - MIChain->Next = MIChainHead;
> +MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) {
> + auto *MIChain = new (BP) MacroInfoChain{L, MIChainHead};
> MIChainHead = MIChain;
> return &MIChain->MI;
> }
>
> -MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) {
> - MacroInfo *MI = AllocateMacroInfo();
> - new (MI) MacroInfo(L);
> - return MI;
> -}
> -
> -MacroInfo *Preprocessor::AllocateDeserializedMacroInfo(SourceLocation L,
> - unsigned SubModuleID) {
> - static_assert(alignof(MacroInfo) >= sizeof(SubModuleID),
> - "alignment for MacroInfo is less than the ID");
> - DeserializedMacroInfoChain *MIChain =
> - BP.Allocate<DeserializedMacroInfoChain>();
> - MIChain->Next = DeserialMIChainHead;
> - DeserialMIChainHead = MIChain;
> -
> - MacroInfo *MI = &MIChain->MI;
> - new (MI) MacroInfo(L);
> - MI->FromASTFile = true;
> - MI->setOwningModuleID(SubModuleID);
> - return MI;
> -}
> -
> DefMacroDirective *Preprocessor::AllocateDefMacroDirective(MacroInfo *MI,
> SourceLocation Loc) {
> return new (BP) DefMacroDirective(MI, Loc);
>
> Modified: cfe/trunk/lib/Lex/Preprocessor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Lex/Preprocessor.cpp (original)
> +++ cfe/trunk/lib/Lex/Preprocessor.cpp Fri May 12 18:40:52 2017
> @@ -88,7 +88,7 @@ Preprocessor::Preprocessor(std::shared_p
> CurDirLookup(nullptr), CurLexerKind(CLK_Lexer),
> CurLexerSubmodule(nullptr), Callbacks(nullptr),
> CurSubmoduleState(&NullSubmoduleState), MacroArgCache(nullptr),
> - Record(nullptr), MIChainHead(nullptr), DeserialMIChainHead(nullptr) {
> + Record(nullptr), MIChainHead(nullptr) {
> OwnsHeaderSearch = OwnsHeaders;
>
> CounterValue = 0; // __COUNTER__ starts at 0.
> @@ -169,11 +169,6 @@ Preprocessor::~Preprocessor() {
> std::fill(TokenLexerCache, TokenLexerCache + NumCachedTokenLexers, nullptr);
> CurTokenLexer.reset();
>
> - while (DeserializedMacroInfoChain *I = DeserialMIChainHead) {
> - DeserialMIChainHead = I->Next;
> - I->~DeserializedMacroInfoChain();
> - }
> -
> // Free any cached MacroArgs.
> for (MacroArgs *ArgList = MacroArgCache; ArgList;)
> ArgList = ArgList->deallocate();
>
> Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTReader.cpp Fri May 12 18:40:52 2017
> @@ -1534,9 +1534,8 @@ MacroInfo *ASTReader::ReadMacroRecord(Mo
> return Macro;
>
> unsigned NextIndex = 1; // Skip identifier ID.
> - SubmoduleID SubModID = getGlobalSubmoduleID(F, Record[NextIndex++]);
> SourceLocation Loc = ReadSourceLocation(F, Record, NextIndex);
> - MacroInfo *MI = PP.AllocateDeserializedMacroInfo(Loc, SubModID);
> + MacroInfo *MI = PP.AllocateMacroInfo(Loc);
> MI->setDefinitionEndLoc(ReadSourceLocation(F, Record, NextIndex));
> MI->setIsUsed(Record[NextIndex++]);
> MI->setUsedForHeaderGuard(Record[NextIndex++]);
>
> Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=302966&r1=302965&r2=302966&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)
> +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Fri May 12 18:40:52 2017
> @@ -2413,7 +2413,6 @@ void ASTWriter::WritePreprocessor(const
> }
>
> AddIdentifierRef(Name, Record);
> - Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));
> AddSourceLocation(MI->getDefinitionLoc(), Record);
> AddSourceLocation(MI->getDefinitionEndLoc(), Record);
> Record.push_back(MI->isUsed());
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list