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