forked from OSchip/llvm-project
Remove unused tracking of owning module for MacroInfo objects.
llvm-svn: 302966
This commit is contained in:
parent
fc8c57cc5b
commit
3f6dd7a86c
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -29,7 +29,6 @@ MacroInfo::MacroInfo(SourceLocation DefLoc)
|
|||
IsUsed(false),
|
||||
IsAllowRedefinitionsWithoutWarning(false),
|
||||
IsWarnIfUnused(false),
|
||||
FromASTFile(false),
|
||||
UsedForHeaderGuard(false) {
|
||||
}
|
||||
|
||||
|
@ -137,7 +136,6 @@ LLVM_DUMP_METHOD void MacroInfo::dump() const {
|
|||
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>";
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -88,7 +88,7 @@ Preprocessor::Preprocessor(std::shared_ptr<PreprocessorOptions> PPOpts,
|
|||
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();
|
||||
|
|
|
@ -1534,9 +1534,8 @@ MacroInfo *ASTReader::ReadMacroRecord(ModuleFile &F, uint64_t Offset) {
|
|||
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++]);
|
||||
|
|
|
@ -2413,7 +2413,6 @@ void ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {
|
|||
}
|
||||
|
||||
AddIdentifierRef(Name, Record);
|
||||
Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));
|
||||
AddSourceLocation(MI->getDefinitionLoc(), Record);
|
||||
AddSourceLocation(MI->getDefinitionEndLoc(), Record);
|
||||
Record.push_back(MI->isUsed());
|
||||
|
|
Loading…
Reference in New Issue