A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/ASTReader_8h_source.html below:

clang: include/clang/Serialization/ASTReader.h Source File

13#ifndef LLVM_CLANG_SERIALIZATION_ASTREADER_H 14#define LLVM_CLANG_SERIALIZATION_ASTREADER_H 37#include "llvm/ADT/ArrayRef.h" 38#include "llvm/ADT/DenseMap.h" 39#include "llvm/ADT/DenseSet.h" 40#include "llvm/ADT/IntrusiveRefCntPtr.h" 41#include "llvm/ADT/MapVector.h" 42#include "llvm/ADT/PagedVector.h" 43#include "llvm/ADT/STLExtras.h" 44#include "llvm/ADT/SetVector.h" 45#include "llvm/ADT/SmallPtrSet.h" 46#include "llvm/ADT/SmallVector.h" 47#include "llvm/ADT/StringMap.h" 48#include "llvm/ADT/StringRef.h" 49#include "llvm/ADT/iterator.h" 50#include "llvm/ADT/iterator_range.h" 51#include "llvm/Bitstream/BitstreamReader.h" 52#include "llvm/Support/MemoryBuffer.h" 53#include "llvm/Support/SaveAndRestore.h" 54#include "llvm/Support/Timer.h" 55#include "llvm/Support/VersionTuple.h" 72class

ASTDeserializationListener;

85class

FileSystemOptions;

87class

GlobalModuleIndex;

89class

HeaderSearchOptions;

92class

InMemoryModuleCache;

95class

ObjCCategoryDecl;

96class

ObjCInterfaceDecl;

97class

PCHContainerReader;

99class

PreprocessorOptions;

106class

TypedefNameDecl;

135

StringRef ModuleFilename,

bool

Complain,

136 bool

AllowCompatibleDifferences) {

145

StringRef ModuleFilename,

bool

Complain,

146 bool

AllowCompatibleDifferences) {

156

StringRef ModuleFilename,

bool

Complain) {

178

StringRef ModuleFilename,

179

StringRef SpecificModuleCachePath,

207

StringRef ModuleFilename,

208 bool

ReadMacros,

bool

Complain,

209

std::string &SuggestedPredefines) {

236 bool

isOverridden,

bool

isExplicitModule) {

255

std::unique_ptr<ASTReaderListener> First;

256

std::unique_ptr<ASTReaderListener> Second;

261

std::unique_ptr<ASTReaderListener> Second)

265

std::unique_ptr<ASTReaderListener>

takeSecond

() {

return

std::move(Second); }

271

StringRef ModuleFilename,

bool

Complain,

272 bool

AllowCompatibleDifferences)

override

;

274

StringRef ModuleFilename,

bool

Complain,

275 bool

AllowCompatibleDifferences)

override

;

277

StringRef ModuleFilename,

bool

Complain)

override

;

279 bool

Complain)

override

;

282

StringRef ModuleFilename,

283

StringRef SpecificModuleCachePath,

284 bool

Complain)

override

;

286

StringRef ModuleFilename,

bool

ReadMacros,

288

std::string &SuggestedPredefines)

override

;

296 bool

isOverridden,

bool

isExplicitModule)

override

;

309

: PP(PP), Reader(Reader) {}

312

StringRef ModuleFilename,

bool

Complain,

313 bool

AllowCompatibleDifferences)

override

;

315

StringRef ModuleFilename,

bool

Complain,

316 bool

AllowCompatibleDifferences)

override

;

318

StringRef ModuleFilename,

bool

Complain)

override

;

320

StringRef ModuleFilename,

bool

ReadMacros,

322

std::string &SuggestedPredefines)

override

;

324

StringRef ModuleFilename,

325

StringRef SpecificModuleCachePath,

326 bool

Complain)

override

;

341

StringRef ModuleFilename,

bool

ReadMacros,

343

std::string &SuggestedPredefines)

override

;

346namespace

serialization {

348class

ReadMethodPoolVisitor;

441

std::unique_ptr<ASTReaderListener> Listener;

446 bool

OwnsDeserializationListener =

false

;

458 Sema

*SemaObj =

nullptr

;

478

llvm::StringMap<std::shared_ptr<ModuleFileExtension>> ModuleFileExtensions;

481

std::unique_ptr<llvm::Timer> ReadTimer;

488

std::optional<ModuleKind> CurrentDeserializingModuleKind;

491

std::unique_ptr<GlobalModuleIndex> GlobalIndex;

511

llvm::PagedVector<QualType> TypesLoaded;

517

llvm::PagedVector<Decl *> DeclsLoaded;

519 using

FileOffset = std::pair<ModuleFile *, uint64_t>;

521 using

DeclUpdateOffsetsMap = llvm::DenseMap<GlobalDeclID, FileOffsetsTy>;

525

DeclUpdateOffsetsMap DeclUpdateOffsets;

527 struct

LookupBlockOffsets {

528

uint64_t LexicalOffset;

529

uint64_t VisibleOffset;

530

uint64_t ModuleLocalOffset;

531

uint64_t TULocalOffset;

534 using

DelayedNamespaceOffsetMapTy =

535

llvm::DenseMap<GlobalDeclID, LookupBlockOffsets>;

545

DelayedNamespaceOffsetMapTy DelayedNamespaceOffsetMap;

561

llvm::DenseMap<GlobalDeclID, SmallVector<GlobalDeclID, 4>> RelatedDeclsMap;

563 struct

PendingUpdateRecord {

571

:

D

(

D

), ID(ID), JustLoaded(JustLoaded) {}

578 enum class

PendingFakeDefinitionKind { NotFake, Fake, FakeLoaded };

582

llvm::DenseMap<void *, PendingFakeDefinitionKind> PendingFakeDefinitionData;

588

llvm::SmallMapVector<Decl *, FunctionDecl *, 4> PendingExceptionSpecUpdates;

593

llvm::SmallMapVector<FunctionDecl *, QualType, 4> PendingDeducedTypeUpdates;

601

llvm::DenseMap<std::pair<DeclContext *, IdentifierInfo *>, NamedDecl *>

602

ImportedTypedefNamesForLinkage;

606

llvm::DenseMap<Decl*, llvm::SmallVector<NamedDecl*, 2>>

607

AnonymousDeclarationsForMerging;

610

llvm::DenseMap<std::pair<const Decl *, unsigned>, NamedDecl *>

611

LambdaDeclarationsForMerging;

615 using

LETemporaryKey = std::pair<Decl *, unsigned>;

618

llvm::DenseMap<LETemporaryKey, LifetimeExtendedTemporaryDecl *>

619

LETemporaryForMerging;

621 struct

FileDeclsInfo {

623

ArrayRef<serialization::unaligned_decl_id_t> Decls;

625

FileDeclsInfo() =

default

;

627

ArrayRef<serialization::unaligned_decl_id_t> Decls)

628

: Mod(Mod), Decls(Decls) {}

632

llvm::DenseMap<FileID, FileDeclsInfo> FileDeclIDs;

636 using

LexicalContents = ArrayRef<serialization::unaligned_decl_id_t>;

639

llvm::DenseMap<const DeclContext*, std::pair<ModuleFile*, LexicalContents>>

643

std::vector<std::pair<ModuleFile*, LexicalContents>> TULexicalDecls;

646

llvm::DenseMap<

const

DeclContext *,

647

serialization::reader::DeclContextLookupTable> Lookups;

648

llvm::DenseMap<

const

DeclContext *,

649

serialization::reader::ModuleLocalLookupTable>

651

llvm::DenseMap<

const

DeclContext *,

652

serialization::reader::DeclContextLookupTable>

655 using

SpecLookupTableTy =

656

llvm::DenseMap<

const Decl

*,

657

serialization::reader::LazySpecializationInfoLookupTable>;

659

SpecLookupTableTy SpecializationsLookups;

661

SpecLookupTableTy PartialSpecializationsLookups;

663 bool

LoadExternalSpecializationsImpl(SpecLookupTableTy &SpecLookups,

665 bool

LoadExternalSpecializationsImpl(SpecLookupTableTy &SpecLookups,

667

ArrayRef<TemplateArgument> TemplateArgs);

675 const unsigned char

*

Data

;

677 using

DeclContextVisibleUpdates = SmallVector<UpdateData, 1>;

681

llvm::DenseMap<GlobalDeclID, DeclContextVisibleUpdates> PendingVisibleUpdates;

682

llvm::DenseMap<GlobalDeclID, DeclContextVisibleUpdates>

683

PendingModuleLocalVisibleUpdates;

684

llvm::DenseMap<GlobalDeclID, DeclContextVisibleUpdates> TULocalUpdates;

686 using

SpecializationsUpdate = SmallVector<UpdateData, 1>;

687 using

SpecializationsUpdateMap =

688

llvm::DenseMap<GlobalDeclID, SpecializationsUpdate>;

689

SpecializationsUpdateMap PendingSpecializationsUpdates;

690

SpecializationsUpdateMap PendingPartialSpecializationsUpdates;

696 using

PendingBodiesMap =

698

llvm::SmallDenseMap<Decl *, unsigned, 4>,

699

SmallVector<std::pair<Decl *, uint64_t>, 4>>;

702

PendingBodiesMap PendingBodies;

706

llvm::SetVector<NamedDecl *> PendingMergedDefinitionsToDeduplicate;

712

PendingWarningForDuplicatedDefsInModuleUnits;

715 bool

ReadLexicalDeclContextStorage(

ModuleFile

&M,

716

llvm::BitstreamCursor &Cursor,

717

uint64_t Offset, DeclContext *DC);

719 enum class

VisibleDeclContextStorageKind {

726 bool

ReadVisibleDeclContextStorage(

ModuleFile

&M,

727

llvm::BitstreamCursor &Cursor,

728

uint64_t Offset, GlobalDeclID ID,

729

VisibleDeclContextStorageKind VisibleKind);

731 bool

ReadSpecializations(

ModuleFile

&M, llvm::BitstreamCursor &Cursor,

732

uint64_t Offset, Decl *

D

,

bool

IsPartial);

733 void

AddSpecializations(

const

Decl *

D

,

const unsigned char

*

Data

,

742

std::vector<IdentifierInfo *> IdentifiersLoaded;

750

std::vector<MacroInfo *> MacrosLoaded;

752 using

LoadedMacroInfo =

753

std::pair<IdentifierInfo *, serialization::SubmoduleID>;

758

llvm::DenseSet<LoadedMacroInfo> LoadedUndefs;

760 using

GlobalMacroMapType =

761

ContinuousRangeMap<serialization::MacroID, ModuleFile *, 4>;

766

GlobalMacroMapType GlobalMacroMap;

772

SmallVector<Module *, 2> SubmodulesLoaded;

774 using

GlobalSubmoduleMapType =

775

ContinuousRangeMap<serialization::SubmoduleID, ModuleFile *, 4>;

780

GlobalSubmoduleMapType GlobalSubmoduleMap;

783 using

HiddenNames = SmallVector<Decl *, 2>;

784 using

HiddenNamesMapType = llvm::DenseMap<Module *, HiddenNames>;

788

HiddenNamesMapType HiddenNamesMap;

791 struct

UnresolvedModuleRef {

799 enum

{

Import

, Export, Conflict, Affecting }

Kind

;

805

LLVM_PREFERRED_TYPE(

bool

)

806 unsigned

IsWildcard : 1;

814

SmallVector<UnresolvedModuleRef, 2> UnresolvedModuleRefs;

821

SmallVector<Selector, 16> SelectorsLoaded;

823 using

GlobalSelectorMapType =

824

ContinuousRangeMap<serialization::SelectorID, ModuleFile *, 4>;

828

GlobalSelectorMapType GlobalSelectorMap;

832

llvm::DenseMap<Selector, unsigned> SelectorGeneration;

836

llvm::DenseMap<Selector, bool> SelectorOutOfDate;

838 struct

PendingMacroInfo {

843

PendingMacroInfo(

ModuleFile

*M, uint32_t MacroDirectivesOffset)

844

: M(M), MacroDirectivesOffset(MacroDirectivesOffset) {}

847 using

PendingMacroIDsMap =

848

llvm::MapVector<IdentifierInfo *, SmallVector<PendingMacroInfo, 2>>;

852

PendingMacroIDsMap PendingMacroIDs;

854 using

GlobalPreprocessedEntityMapType =

855

ContinuousRangeMap<unsigned, ModuleFile *, 4>;

860

GlobalPreprocessedEntityMapType GlobalPreprocessedEntityMap;

862 using

GlobalSkippedRangeMapType =

863

ContinuousRangeMap<unsigned, ModuleFile *, 4>;

867

GlobalSkippedRangeMapType GlobalSkippedRangeMap;

879

SmallVector<GlobalDeclID, 16> EagerlyDeserializedDecls;

884

SmallVector<GlobalDeclID, 16> VTablesToEmit;

891

SmallVector<GlobalDeclID, 16> TentativeDefinitions;

903

SmallVector<VTableUse> VTableUses;

911 struct

PendingInstantiation {

915

SmallVector<PendingInstantiation, 64> PendingInstantiations;

925

SmallVector<GlobalDeclID, 16> UnusedFileScopedDecls;

929

SmallVector<GlobalDeclID, 4> DelegatingCtorDecls;

933

SmallVector<serialization::SelectorID, 64> ReferencedSelectorsData;

937

SmallVector<serialization::IdentifierID, 64> WeakUndeclaredIdentifiers;

942

SmallVector<GlobalDeclID, 4> ExtVectorDecls;

953

SmallVector<GlobalDeclID, 16> UnusedLocalTypedefNameCandidates;

957 unsigned

ForceHostDeviceDepth = 0;

962

SmallVector<GlobalDeclID, 4> SemaDeclRefs;

967

SmallVector<serialization::TypeID, 16> SpecialTypes;

973

SmallVector<GlobalDeclID, 2> CUDASpecialDeclRefs;

976

SmallVector<uint64_t, 1> FPPragmaOptions;

979

SourceLocation OptimizeOffPragmaLocation;

982 int

PragmaMSStructState = -1;

985 int

PragmaMSPointersToMembersState = -1;

986

SourceLocation PointersToMembersPragmaLocation;

989

std::optional<FPOptionsOverride> FpPragmaCurrentValue;

990

SourceLocation FpPragmaCurrentLocation;

991 struct

FpPragmaStackEntry {

992

FPOptionsOverride

Value

;

993

SourceLocation Location;

994

SourceLocation PushLocation;

1001

std::optional<Sema::AlignPackInfo> PragmaAlignPackCurrentValue;

1002

SourceLocation PragmaAlignPackCurrentLocation;

1003 struct

PragmaAlignPackStackEntry {

1004

Sema::AlignPackInfo

Value

;

1005

SourceLocation Location;

1006

SourceLocation PushLocation;

1007

StringRef SlotLabel;

1013

OpenCLOptions OpenCLExtensions;

1016

llvm::DenseMap<const Type *, std::set<std::string>> OpenCLTypeExtMap;

1019

llvm::DenseMap<const Decl *, std::set<std::string>> OpenCLDeclExtMap;

1022

SmallVector<GlobalDeclID, 4> KnownNamespaces;

1026 struct

UndefinedButUsedDecl {

1030

SmallVector<UndefinedButUsedDecl, 8> UndefinedButUsed;

1033

SmallVector<uint64_t, 8> DelayedDeleteExprs;

1036

SmallVector<std::pair<ModuleFile *, SmallVector<uint64_t, 1>>, 4>

1037

LateParsedTemplates;

1045

SmallVector<GlobalDeclID> DeclsWithEffectsToVerify;

1048 struct

ImportedSubmodule {

1050

SourceLocation ImportLoc;

1053

:

ID

(

ID

), ImportLoc(ImportLoc) {}

1060

SmallVector<ImportedSubmodule, 2> PendingImportedModules;

1064

SmallVector<ImportedSubmodule, 2> PendingImportedModulesSema;

1069

std::string isysroot;

1076 bool

AllowASTWithCompilerErrors;

1080 bool

AllowConfigurationMismatch;

1083 bool

ValidateSystemInputs;

1086 bool

ValidateASTInputFilesContent;

1089 bool

UseGlobalIndex;

1092 bool

TriedLoadingGlobalIndex =

false

;

1095 bool

ProcessingUpdateRecords =

false

;

1097 using

SwitchCaseMapTy = llvm::DenseMap<unsigned, SwitchCase *>;

1103

SwitchCaseMapTy SwitchCaseStmts;

1105

SwitchCaseMapTy *CurrSwitchCaseStmts;

1109 unsigned

NumSLocEntriesRead = 0;

1112 unsigned

TotalNumSLocEntries = 0;

1116 unsigned

NumStatementsRead = 0;

1120 unsigned

TotalNumStatements = 0;

1123 unsigned

NumMacrosRead = 0;

1126 unsigned

TotalNumMacros = 0;

1129 unsigned

NumIdentifierLookups = 0;

1132 unsigned

NumIdentifierLookupHits = 0;

1135 unsigned

NumSelectorsRead = 0;

1138 unsigned

NumMethodPoolEntriesRead = 0;

1142 unsigned

NumMethodPoolLookups = 0;

1146 unsigned

NumMethodPoolHits = 0;

1150 unsigned

NumMethodPoolTableLookups = 0;

1154 unsigned

NumMethodPoolTableHits = 0;

1157 unsigned

TotalNumMethodPoolEntries = 0;

1160 unsigned

NumLexicalDeclContextsRead = 0, TotalLexicalDeclContexts = 0;

1163 unsigned

NumVisibleDeclContextsRead = 0, TotalVisibleDeclContexts = 0;

1166 unsigned

NumModuleLocalVisibleDeclContexts = 0,

1167

TotalModuleLocalVisibleDeclContexts = 0;

1170 unsigned

NumTULocalVisibleDeclContexts = 0,

1171

TotalTULocalVisibleDeclContexts = 0;

1174 uint64_t

TotalModulesSizeInBits = 0;

1177 unsigned

NumCurrentElementsDeserializing = 0;

1183 bool

PassingDeclsToConsumer =

false

;

1190

llvm::MapVector<IdentifierInfo *, SmallVector<GlobalDeclID, 4>>

1191

PendingIdentifierInfos;

1195

llvm::SmallMapVector<const IdentifierInfo *, SmallVector<NamedDecl *, 2>, 16>

1196

PendingFakeLookupResults;

1200

llvm::DenseMap<const IdentifierInfo *, unsigned> IdentifierGeneration;

1208

std::deque<Decl *> PotentiallyInterestingDecls;

1213

SmallVector<std::pair<FunctionDecl *, serialization::TypeID>, 16>

1214

PendingDeducedFunctionTypes;

1219

SmallVector<std::pair<VarDecl *, serialization::TypeID>, 16>

1220

PendingDeducedVarTypes;

1225

SmallVector<std::pair<Decl *, uint64_t>, 16> PendingDeclChains;

1229

SmallVector<Decl *, 16> PendingIncompleteDeclChains;

1233 struct

PendingDeclContextInfo {

1235

GlobalDeclID SemaDC;

1236

GlobalDeclID LexicalDC;

1244

std::deque<PendingDeclContextInfo> PendingDeclContextInfos;

1246 template

<

typename

DeclTy>

1247 using

DuplicateObjCDecls = std::pair<DeclTy *, DeclTy *>;

1253

llvm::SmallMapVector<DuplicateObjCDecls<ObjCCategoryDecl>,

1256

PendingObjCExtensionIvarRedeclarations;

1261

SmallVector<std::pair<CXXRecordDecl*, Decl*>, 4> PendingAddedClassMembers;

1271 using

DataPointers =

1272

std::pair<CXXRecordDecl *, struct CXXRecordDecl::DefinitionData *>;

1273 using

ObjCInterfaceDataPointers =

1274

std::pair<ObjCInterfaceDecl *,

1275 struct

ObjCInterfaceDecl::DefinitionData *>;

1276 using

ObjCProtocolDataPointers =

1277

std::pair<ObjCProtocolDecl *, struct ObjCProtocolDecl::DefinitionData *>;

1280

llvm::SmallDenseMap<CXXRecordDecl *, llvm::SmallVector<DataPointers, 2>, 2>

1281

PendingOdrMergeFailures;

1284

llvm::SmallDenseMap<RecordDecl *, llvm::SmallVector<RecordDecl *, 2>, 2>

1285

PendingRecordOdrMergeFailures;

1288

llvm::SmallDenseMap<FunctionDecl *, llvm::SmallVector<FunctionDecl *, 2>, 2>

1289

PendingFunctionOdrMergeFailures;

1292

llvm::SmallDenseMap<EnumDecl *, llvm::SmallVector<EnumDecl *, 2>, 2>

1293

PendingEnumOdrMergeFailures;

1296

llvm::SmallDenseMap<ObjCInterfaceDecl *,

1298

PendingObjCInterfaceOdrMergeFailures;

1301

llvm::SmallDenseMap<ObjCProtocolDecl *,

1303

PendingObjCProtocolOdrMergeFailures;

1315

SmallVector<ObjCInterfaceDecl *, 16> ObjCClassesLoaded;

1317 using

KeyDeclsMap = llvm::DenseMap<Decl *, SmallVector<GlobalDeclID, 2>>;

1324

KeyDeclsMap KeyDecls;

1329

llvm::DenseMap<DeclContext *, DeclContext *> MergedDeclContexts;

1333

llvm::DenseMap<EnumDecl *, EnumDecl *> EnumDefinitions;

1337

llvm::DenseMap<RecordDecl *, RecordDecl *> RecordDefinitions;

1340

SmallVector<Stmt *, 16> StmtStack;

1344

Read_None, Read_Decl, Read_Type, Read_Stmt

1348

ReadingKind ReadingKind = Read_None;

1351 class

ReadingKindTracker {

1353 enum

ReadingKind PrevKind;

1356

ReadingKindTracker(

enum

ReadingKind newKind, ASTReader &reader)

1357

: Reader(reader), PrevKind(Reader.ReadingKind) {

1358

Reader.ReadingKind = newKind;

1361

ReadingKindTracker(

const

ReadingKindTracker &) =

delete

;

1362

ReadingKindTracker &operator=(

const

ReadingKindTracker &) =

delete

;

1363

~ReadingKindTracker() { Reader.ReadingKind = PrevKind; }

1367 class

ProcessingUpdatesRAIIObj {

1372

ProcessingUpdatesRAIIObj(ASTReader &reader)

1373

: Reader(reader), PrevState(Reader.ProcessingUpdateRecords) {

1374

Reader.ProcessingUpdateRecords =

true

;

1377

ProcessingUpdatesRAIIObj(

const

ProcessingUpdatesRAIIObj &) =

delete

;

1378

ProcessingUpdatesRAIIObj &

1379

operator=(

const

ProcessingUpdatesRAIIObj &) =

delete

;

1380

~ProcessingUpdatesRAIIObj() { Reader.ProcessingUpdateRecords = PrevState; }

1391

std::string SuggestedPredefines;

1393

llvm::DenseMap<const Decl *, bool> DefinitionSource;

1395 bool

shouldDisableValidationForFile(

const

serialization::ModuleFile &M)

const

;

1401

serialization::InputFileInfo getInputFileInfo(

ModuleFile

&F,

unsigned

ID);

1405

serialization::InputFile getInputFile(

ModuleFile

&F,

unsigned

ID,

1406 bool

Complain =

true

);

1409

SmallString<0> PathBuf;

1412 class

TemporarilyOwnedStringRef {

1417

TemporarilyOwnedStringRef(StringRef S, SmallString<0> &UnderlyingBuffer)

1418

: String(S), UnderlyingBuffer(UnderlyingBuffer, {}) {}

1421 const

StringRef *operator->() const & {

return

&String; }

1422 const

StringRef &

operator*

() const & {

return

String; }

1425 const

StringRef *operator->() && =

delete

;

1426 const

StringRef &

operator*

() && =

delete

;

1435 static

TemporarilyOwnedStringRef

1439 static

TemporarilyOwnedStringRef

1455 D

=

D

->getCanonicalDecl();

1456 if

(

D

->isFromASTFile())

1459 auto

I = KeyDecls.find(

D

);

1460 if

(I == KeyDecls.end() || I->second.empty())

1469 template

<

typename

Fn>

1471 D

=

D

->getCanonicalDecl();

1472 if

(

D

->isFromASTFile())

1475 auto

It = KeyDecls.find(

const_cast<Decl

*

>

(

D

));

1476 if

(It != KeyDecls.end())

1477 for

(

auto

ID : It->second)

1500 struct

ImportedModule {

1508

: Mod(Mod), ImportedBy(ImportedBy), ImportLoc(ImportLoc) {}

1512

SourceLocation ImportLoc,

ModuleFile

*ImportedBy,

1513

SmallVectorImpl<ImportedModule> &Loaded,

1514

off_t ExpectedSize, time_t ExpectedModTime,

1515

ASTFileSignature ExpectedSignature,

1516 unsigned

ClientLoadCapabilities);

1518

SmallVectorImpl<ImportedModule> &Loaded,

1520 unsigned

ClientLoadCapabilities);

1522

ReadOptionsBlock(llvm::BitstreamCursor &Stream, StringRef

Filename

,

1523 unsigned

ClientLoadCapabilities,

1524 bool

AllowCompatibleConfigurationMismatch,

1525

ASTReaderListener &Listener,

1526

std::string &SuggestedPredefines);

1533 unsigned

ClientLoadCapabilities);

1537 unsigned

ClientLoadCapabilities,

1538 bool

AllowCompatibleConfigurationMismatch, ASTReaderListener *Listener,

1539 bool

ValidateDiagnosticOptions);

1541

llvm::Error ReadASTBlock(

ModuleFile

&F,

unsigned

ClientLoadCapabilities);

1542

llvm::Error ReadExtensionBlock(

ModuleFile

&F);

1543 void

ReadModuleOffsetMap(

ModuleFile

&F)

const

;

1545

llvm::Error ReadSourceManagerBlock(

ModuleFile

&F);

1546

SourceLocation getImportLocation(

ModuleFile

*F);

1549 unsigned

ClientLoadCapabilities);

1550

llvm::Error ReadSubmoduleBlock(

ModuleFile

&F,

1551 unsigned

ClientLoadCapabilities);

1553

StringRef ModuleFilename,

bool

Complain,

1554

ASTReaderListener &Listener,

1555 bool

AllowCompatibleDifferences);

1557

StringRef ModuleFilename,

bool

Complain,

1558

ASTReaderListener &Listener,

1559 bool

AllowCompatibleDifferences);

1561

StringRef ModuleFilename,

bool

Complain,

1562

ASTReaderListener &Listener);

1563 static bool

ParseFileSystemOptions(

const RecordData

&

Record

,

bool

Complain,

1564

ASTReaderListener &Listener);

1566

StringRef ModuleFilename,

bool

Complain,

1567

ASTReaderListener &Listener);

1568 static bool

ParseHeaderSearchPaths(

const RecordData

&

Record

,

bool

Complain,

1569

ASTReaderListener &Listener);

1571

StringRef ModuleFilename,

bool

Complain,

1572

ASTReaderListener &Listener,

1573

std::string &SuggestedPredefines);

1575 struct

RecordLocation {

1579

RecordLocation(

ModuleFile

*M, uint64_t O) : F(M), Offset(O) {}

1584 void

LoadedDecl(

unsigned

Index, Decl *

D

);

1585 Decl

*ReadDeclRecord(GlobalDeclID ID);

1586 void

markIncompleteDeclChain(Decl *

D

);

1591 Decl

*getMostRecentExistingDecl(Decl *

D

);

1593

RecordLocation DeclCursorForID(GlobalDeclID ID, SourceLocation &Location);

1594 void

loadDeclUpdateRecords(PendingUpdateRecord &

Record

);

1595 void

loadPendingDeclChain(Decl *

D

, uint64_t LocalOffset);

1596 void

loadObjCCategories(GlobalDeclID ID, ObjCInterfaceDecl *

D

,

1597 unsigned

PreviousGeneration = 0);

1599

RecordLocation getLocalBitOffset(uint64_t GlobalOffset);

1605

findPreprocessedEntity(SourceLocation

Loc

,

bool

EndsAfter)

const

;

1614

findNextPreprocessedEntity(

1619

std::pair<ModuleFile *, unsigned>

1620

getModulePreprocessedEntity(

unsigned

GlobalIndex);

1624

llvm::iterator_range<PreprocessingRecord::iterator>

1625

getModulePreprocessedEntities(

ModuleFile

&Mod)

const

;

1627 bool

canRecoverFromOutOfDate(StringRef ModuleFileName,

1628 unsigned

ClientLoadCapabilities);

1632

:

public

llvm::iterator_adaptor_base<

1633

ModuleDeclIterator, const serialization::unaligned_decl_id_t *,

1634

std::random_access_iterator_tag, const Decl *, ptrdiff_t,

1635

const Decl *, const Decl *> {

1644

: iterator_adaptor_base(Pos), Reader(Reader), Mod(Mod) {}

1654

assert(Reader == RHS.Reader && Mod == RHS.Mod);

1659

llvm::iterator_range<ModuleDeclIterator>

1663 bool

isConsumerInterestedIn(

Decl

*

D

);

1664 void

PassInterestingDeclsToConsumer();

1665 void

PassInterestingDeclToConsumer(

Decl

*

D

);

1668 void

finishPendingActions();

1669 void

diagnoseOdrViolations();

1676

PendingDeclContextInfo Info = {

D

, SemaDC, LexicalDC };

1677

PendingDeclContextInfos.push_back(Info);

1684 void

Error(StringRef Msg)

const

;

1685 void

Error(

unsigned

DiagID, StringRef Arg1 = StringRef(),

1686

StringRef Arg2 = StringRef(), StringRef Arg3 = StringRef())

const

;

1687 void

Error(llvm::Error &&Err)

const

;

1690 unsigned

translateGlobalDeclIDToIndex(GlobalDeclID ID)

const

;

1694

std::pair<ModuleFile *, unsigned>

1699

std::pair<ModuleFile *, unsigned>

1745 ASTReader

(Preprocessor &PP, InMemoryModuleCache &ModuleCache,

1746

ASTContext *Context,

const

PCHContainerReader &PCHContainerRdr,

1747

ArrayRef<std::shared_ptr<ModuleFileExtension>> Extensions,

1748

StringRef isysroot =

""

,

1751 bool

AllowASTWithCompilerErrors =

false

,

1752 bool

AllowConfigurationMismatch =

false

,

1753 bool

ValidateSystemInputs =

false

,

1754 bool

ValidateASTInputFilesContent =

false

,

1755 bool

UseGlobalIndex =

true

,

1756

std::unique_ptr<llvm::Timer> ReadTimer = {});

1819 unsigned

ClientLoadCapabilities,

1820 ModuleFile

**NewLoadedModuleFile =

nullptr

);

1844 return

std::move(Listener);

1849

this->Listener = std::move(Listener);

1857

L = std::make_unique<ChainedASTReaderListener>(std::move(L),

1858

std::move(Listener));

1859

Listener = std::move(L);

1865 bool

Chained =

false

;

1873

L = std::make_unique<ChainedASTReaderListener>(std::move(L),

1889 bool

TakeOwnership =

false

);

1893 return

DeserializationListener;

1922

std::unique_ptr<llvm::MemoryBuffer> Buffer) {

1972

StringRef ExistingModuleCachePath,

1973 bool

RequireStrictOptionMatches =

false

);

1988

std::pair<unsigned, unsigned>

2006 return

TotalNumSLocEntries;

2011 return static_cast<unsigned>

(IdentifiersLoaded.size());

2016 return static_cast<unsigned>

(MacrosLoaded.size());

2021 return static_cast<unsigned>

(TypesLoaded.size());

2026 return static_cast<unsigned>

(DeclsLoaded.size());

2031 return static_cast<unsigned>

(SubmodulesLoaded.size());

2036 return static_cast<unsigned>

(SelectorsLoaded.size());

2043 for

(

const auto

&M : ModuleMgr)

2044 Result

+= M.NumPreprocessedEntities;

2062 if

(Idx >=

Record

.size())

2130 template

<

typename

T>

2154

uint64_t *StartOfBlockOffset =

nullptr

);

2184

llvm::function_ref<

bool

(

Decl::Kind

)> IsKindWeWant,

2253

llvm::MapVector<NamedDecl *, SourceLocation> &Undefined)

override

;

2277 SmallVectorImpl

<std::pair<Selector, SourceLocation>> &Sels)

override

;

2280 SmallVectorImpl

<std::pair<IdentifierInfo *, WeakInfo>> &WeakIDs)

override

;

2289

llvm::MapVector<

const FunctionDecl

*, std::unique_ptr<LateParsedTemplate>>

2309

llvm::function_ref<

void

()> Fn);

2355 unsigned

LocalID)

const

;

2394 unsigned

LocalID)

const

;

2408

std::pair<SourceLocation, unsigned>

2418

ReadModuleOffsetMap(MF);

2425 "Run out source location space"

);

2434 if

(

Loc

.isInvalid())

2455 unsigned

&Idx)

const

{

2461

assert(FID.ID >= 0 &&

"Reading non-local FileID."

);

2469 unsigned

&Idx, LocSeq *

Seq

=

nullptr

);

2472 const

StringRef Blob);

2486 unsigned

&Idx, StringRef &Blob);

2502

assert(ReadingKind == Read_Stmt &&

2503 "Should be called only during statement reading!"

);

2506

assert(!StmtStack.empty() &&

"Read too many sub-statements!"

);

2507 return

StmtStack.pop_back_val();

2531

uint32_t MacroDirectivesOffset);

2547

assert(ContextObj &&

"requested AST context when not loading AST"

);

2594 bool

IncludeSystem,

bool

Complain,

2596 bool

isSystem)> Visitor);

2609 constexpr static

uint32_t BitsIndexUpbound = 32;

2621

CurrentBitsIndex = 0;

2624 void advance

(uint32_t BitsWidth) { CurrentBitsIndex += BitsWidth; }

2628 return Value

& (1 << CurrentBitsIndex++);

2633

assert(Width < BitsIndexUpbound);

2634

uint32_t Ret = (

Value

>> CurrentBitsIndex) & ((1 << Width) - 1);

2635

CurrentBitsIndex += Width;

2640 return

CurrentBitsIndex + Width < BitsIndexUpbound;

2644 bool

isValid()

const

{

return

CurrentBitsIndex < BitsIndexUpbound; }

2647

uint32_t CurrentBitsIndex = ~0;

Defines the Diagnostic-related interfaces.

clang::CharUnits operator*(clang::CharUnits::QuantityType Scale, const clang::CharUnits &CU)

enum clang::sema::@1704::IndirectLocalPathEntry::EntryKind Kind

Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.

llvm::MachO::Record Record

Defines the clang::OpenCLOptions class.

Defines the clang::SourceLocation class and associated facilities.

Defines a utilitiy for warning once when close to out of stack space.

C Language Family Type Representation.

Defines version macros and version-related utility functions for Clang.

ASTConsumer - This is an abstract interface that should be implemented by clients that read ASTs.

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

const LangOptions & getLangOpts() const

An identifier-lookup iterator that enumerates all of the identifiers stored within a set of AST files...

Abstract interface for callback invocations by the ASTReader.

virtual void ReadModuleMapFile(StringRef ModuleMapPath)

virtual bool needsInputFileVisitation()

Returns true if this ASTReaderListener wants to receive the input files of the AST file via visitInpu...

virtual bool ReadTargetOptions(const TargetOptions &TargetOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences)

Receives the target options.

virtual bool visitInputFile(StringRef Filename, bool isSystem, bool isOverridden, bool isExplicitModule)

if needsInputFileVisitation returns true, this is called for each non-system input file of the AST Fi...

virtual bool ReadDiagnosticOptions(IntrusiveRefCntPtr< DiagnosticOptions > DiagOpts, StringRef ModuleFilename, bool Complain)

Receives the diagnostic options.

virtual bool ReadHeaderSearchPaths(const HeaderSearchOptions &HSOpts, bool Complain)

Receives the header search paths.

virtual bool ReadFileSystemOptions(const FileSystemOptions &FSOpts, bool Complain)

Receives the file system options.

virtual ~ASTReaderListener()

virtual bool ReadPreprocessorOptions(const PreprocessorOptions &PPOpts, StringRef ModuleFilename, bool ReadMacros, bool Complain, std::string &SuggestedPredefines)

Receives the preprocessor options.

virtual bool ReadHeaderSearchOptions(const HeaderSearchOptions &HSOpts, StringRef ModuleFilename, StringRef SpecificModuleCachePath, bool Complain)

Receives the header search options.

virtual void readModuleFileExtension(const ModuleFileExtensionMetadata &Metadata)

Indicates that a particular module file extension has been read.

virtual bool ReadLanguageOptions(const LangOptions &LangOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences)

Receives the language options.

virtual void visitImport(StringRef ModuleName, StringRef Filename)

If needsImportVisitation returns true, this is called for each AST file imported by this AST file.

virtual void visitModuleFile(StringRef Filename, serialization::ModuleKind Kind)

This is called for each AST file loaded.

virtual bool needsImportVisitation() const

Returns true if this ASTReaderListener wants to receive the imports of the AST file via visitImport,...

virtual bool ReadFullVersionInformation(StringRef FullVersion)

Receives the full Clang version information.

virtual void ReadCounter(const serialization::ModuleFile &M, unsigned Value)

Receives COUNTER value.

virtual void ReadModuleName(StringRef ModuleName)

virtual bool needsSystemInputFileVisitation()

Returns true if this ASTReaderListener wants to receive the system input files of the AST file via vi...

RAII object to temporarily add an AST callback listener.

ListenerScope(ASTReader &Reader, std::unique_ptr< ASTReaderListener > L)

value_type operator*() const

value_type operator->() const

bool operator==(const ModuleDeclIterator &RHS) const

ModuleDeclIterator(ASTReader *Reader, ModuleFile *Mod, const serialization::unaligned_decl_id_t *Pos)

Reads an AST files chain containing the contents of a translation unit.

std::optional< bool > isPreprocessedEntityInFileID(unsigned Index, FileID FID) override

Optionally returns true or false if the preallocated preprocessed entity with index Index came from f...

PreprocessedEntity * ReadPreprocessedEntity(unsigned Index) override

Read a preallocated preprocessed entity from the external source.

void markIdentifierUpToDate(const IdentifierInfo *II)

Note that this identifier is up-to-date.

void visitTopLevelModuleMaps(serialization::ModuleFile &MF, llvm::function_ref< void(FileEntryRef)> Visitor)

Visit all the top-level module maps loaded when building the given module file.

void setDeserializationListener(ASTDeserializationListener *Listener, bool TakeOwnership=false)

Set the AST deserialization listener.

SmallVectorImpl< uint64_t > RecordDataImpl

serialization::SubmoduleID getGlobalSubmoduleID(ModuleFile &M, unsigned LocalID) const

Retrieve the global submodule ID given a module and its local ID number.

ExtKind hasExternalDefinitions(const Decl *D) override

IdentifierTable & getIdentifierTable()

Retrieve the identifier table associated with the preprocessor.

SourceLocationEncoding::RawLocEncoding RawLocEncoding

ModuleManager & getModuleManager()

Retrieve the module manager.

ASTReader & operator=(const ASTReader &)=delete

bool isDeclIDFromModule(GlobalDeclID ID, ModuleFile &M) const

Returns true if global DeclID ID originated from module M.

bool ReadSLocEntry(int ID) override

Read the source location entry with index ID.

void RecordSwitchCaseID(SwitchCase *SC, unsigned ID)

Record that the given ID maps to the given switch-case statement.

DiagnosticBuilder Diag(unsigned DiagID) const

Report a diagnostic.

unsigned getTotalNumPreprocessedEntities() const

Returns the number of preprocessed entities known to the AST reader.

ASTContext & getContext()

Retrieve the AST context that this AST reader supplements.

Decl * ReadDecl(ModuleFile &F, const RecordDataImpl &R, unsigned &I)

Reads a declaration from the given position in a record in the given module.

ModuleManager::ModuleIterator ModuleIterator

static std::string ReadString(const RecordDataImpl &Record, unsigned &Idx)

void ReadDeclsToCheckForDeferredDiags(llvm::SmallSetVector< Decl *, 4 > &Decls) override

Read the set of decls to be checked for deferred diags.

void InitializeSema(Sema &S) override

Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...

LoadFailureCapabilities

Flags that indicate what kind of AST loading failures the client of the AST reader can directly handl...

@ ARR_Missing

The client can handle an AST file that cannot load because it is missing.

@ ARR_None

The client can't handle any AST loading failures.

@ ARR_ConfigurationMismatch

The client can handle an AST file that cannot load because it's compiled configuration doesn't match ...

@ ARR_OutOfDate

The client can handle an AST file that cannot load because it is out-of-date relative to its input fi...

@ ARR_TreatModuleWithErrorsAsOutOfDate

If a module file is marked with errors treat it as out-of-date so the caller can rebuild it.

@ ARR_VersionMismatch

The client can handle an AST file that cannot load because it was built with a different version of C...

void ReadMismatchingDeleteExpressions(llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &Exprs) override

void FindFileRegionDecls(FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls) override

Get the decls that are contained in a file in the Offset/Length range.

std::string ReadPathBlob(StringRef BaseDirectory, const RecordData &Record, unsigned &Idx, StringRef &Blob)

SourceRange ReadSkippedRange(unsigned Index) override

Read a preallocated skipped range from the external source.

serialization::TypeID getGlobalTypeID(ModuleFile &F, serialization::LocalTypeID LocalID) const

Map a local type ID within a given AST file into a global type ID.

const std::string & getSuggestedPredefines()

Returns the suggested contents of the predefines buffer, which contains a (typically-empty) subset of...

void dump()

Dump information about the AST reader to standard error.

MacroInfo * ReadMacroRecord(ModuleFile &F, uint64_t Offset)

Reads the macro record located at the given offset.

SmallVector< std::pair< llvm::BitstreamCursor, serialization::ModuleFile * >, 8 > CommentsCursors

Cursors for comments blocks.

Selector getLocalSelector(ModuleFile &M, unsigned LocalID)

Retrieve a selector from the given module with its local ID number.

void FindExternalLexicalDecls(const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Decls) override

Read all of the declarations lexically stored in a declaration context.

ModuleFile * getOwningModuleFile(const Decl *D) const

Retrieve the module file that owns the given declaration, or NULL if the declaration is not from a mo...

std::optional< ASTSourceDescriptor > getSourceDescriptor(unsigned ID) override

Return a descriptor for the corresponding module.

const serialization::reader::DeclContextLookupTable * getLoadedLookupTables(DeclContext *Primary) const

Get the loaded lookup tables for Primary, if any.

T * ReadDeclAs(ModuleFile &F, const RecordDataImpl &R, unsigned &I)

Reads a declaration from the given position in a record in the given module.

QualType getLocalType(ModuleFile &F, serialization::LocalTypeID LocalID)

Resolve a local type ID within a given AST file into a type.

void ClearSwitchCaseIDs()

Sema::AlignPackInfo ReadAlignPackInfo(uint32_t Raw) const

Read a AlignPackInfo from raw form.

QualType readType(ModuleFile &F, const RecordData &Record, unsigned &Idx)

Read a type from the current position in the given record, which was read from the given AST file.

SourceLocation ReadSourceLocation(ModuleFile &MF, RawLocEncoding Raw, LocSeq *Seq=nullptr) const

Read a source location from raw form.

void SetGloballyVisibleDecls(IdentifierInfo *II, const SmallVectorImpl< GlobalDeclID > &DeclIDs, SmallVectorImpl< Decl * > *Decls=nullptr)

Set the globally-visible declarations associated with the given identifier.

serialization::ModuleKind ModuleKind

bool loadGlobalIndex()

Attempts to load the global index.

void ReadComments() override

Loads comments ranges.

SourceManager & getSourceManager() const

const serialization::reader::ModuleLocalLookupTable * getModuleLocalLookupTables(DeclContext *Primary) const

SourceLocation getSourceLocationForDeclID(GlobalDeclID ID)

Returns the source location for the decl ID.

void makeModuleVisible(Module *Mod, Module::NameVisibilityKind NameVisibility, SourceLocation ImportLoc)

Make the entities in the given module and any of its (non-explicit) submodules visible to name lookup...

unsigned getTotalNumSubmodules() const

Returns the number of submodules known.

ASTReader(const ASTReader &)=delete

bool LoadExternalSpecializations(const Decl *D, bool OnlyPartial) override

Load all the external specializations for the Decl.

void finalizeForWriting()

Finalizes the AST reader's state before writing an AST file to disk.

Sema * getSema()

Retrieve the semantic analysis object used to analyze the translation unit in which the precompiled h...

static std::string ResolveImportedPathAndAllocate(SmallString< 0 > &Buf, StringRef Path, ModuleFile &ModF)

Resolve Path in the context of module file M.

static StringRef ReadStringBlob(const RecordDataImpl &Record, unsigned &Idx, StringRef &Blob)

unsigned getTotalNumIdentifiers() const

Returns the number of identifiers found in the chain.

CXXCtorInitializer ** GetExternalCXXCtorInitializers(uint64_t Offset) override

Read the contents of a CXXCtorInitializer array.

void visitInputFileInfos(serialization::ModuleFile &MF, bool IncludeSystem, llvm::function_ref< void(const serialization::InputFileInfo &IFI, bool IsSystem)> Visitor)

Visit all the input file infos of the given module file.

const ModuleManager & getModuleManager() const

unsigned getTotalNumSLocs() const

Returns the number of source locations found in the chain.

void StartTranslationUnit(ASTConsumer *Consumer) override

Function that will be invoked when we begin parsing a new translation unit involving this external AS...

LocalDeclID mapGlobalIDToModuleFileGlobalID(ModuleFile &M, GlobalDeclID GlobalID)

Map a global declaration ID into the declaration ID used to refer to this declaration within the give...

void resolvePendingMacro(IdentifierInfo *II, const PendingMacroInfo &PMInfo)

void ReadTentativeDefinitions(SmallVectorImpl< VarDecl * > &TentativeDefs) override

Read the set of tentative definitions known to the external Sema source.

Decl * GetExternalDecl(GlobalDeclID ID) override

Resolve a declaration ID into a declaration, potentially building a new declaration.

std::pair< SourceLocation, unsigned > ReadUntranslatedSourceLocation(RawLocEncoding Raw, LocSeq *Seq=nullptr) const

Read a source location from raw form and return it in its originating module file's source location s...

GlobalDeclID ReadDeclID(ModuleFile &F, const RecordDataImpl &Record, unsigned &Idx)

Reads a declaration ID from the given position in a record in the given module.

llvm::Expected< SourceLocation::UIntTy > readSLocOffset(ModuleFile *F, unsigned Index)

Try to read the offset of the SLocEntry at the given index in the given module file.

void forEachImportedKeyDecl(const Decl *D, Fn Visit)

Run a callback on each imported key declaration of D.

bool haveUnloadedSpecializations(const Decl *D) const

If we have any unloaded specialization for D.

Stmt * ReadSubStmt()

Reads a sub-statement operand during statement reading.

void CompleteRedeclChain(const Decl *D) override

If any redeclarations of D have been imported since it was last checked, this digs out those redeclar...

Expr * ReadSubExpr()

Reads a sub-expression operand during statement reading.

SourceLocation TranslateSourceLocation(ModuleFile &ModuleFile, SourceLocation Loc) const

Translate a source location from another module file's source location space into ours.

static llvm::Error ReadBlockAbbrevs(llvm::BitstreamCursor &Cursor, unsigned BlockID, uint64_t *StartOfBlockOffset=nullptr)

ReadBlockAbbrevs - Enter a subblock of the specified BlockID with the specified cursor.

void SetIdentifierInfo(serialization::IdentifierID ID, IdentifierInfo *II)

serialization::PreprocessedEntityID getGlobalPreprocessedEntityID(ModuleFile &M, unsigned LocalID) const

Determine the global preprocessed entity ID that corresponds to the given local ID within the given m...

std::pair< unsigned, unsigned > findPreprocessedEntitiesInRange(SourceRange Range) override

Returns a pair of [Begin, End) indices of preallocated preprocessed entities that Range encompasses.

IdentifierInfo * get(StringRef Name) override

Retrieve the IdentifierInfo for the named identifier.

IdentifierInfo * getLocalIdentifier(ModuleFile &M, uint64_t LocalID)

void visitInputFiles(serialization::ModuleFile &MF, bool IncludeSystem, bool Complain, llvm::function_ref< void(const serialization::InputFile &IF, bool isSystem)> Visitor)

Visit all the input files of the given module file.

Module * getModule(unsigned ID) override

Retrieve the module that corresponds to the given module ID.

llvm::iterator_range< ModuleDeclIterator > getModuleFileLevelDecls(ModuleFile &Mod)

Stmt * GetExternalDeclStmt(uint64_t Offset) override

Resolve the offset of a statement into a statement.

Selector GetExternalSelector(serialization::SelectorID ID) override

Resolve a selector ID into a selector.

unsigned getTotalNumSelectors() const

Returns the number of selectors found in the chain.

MacroInfo * getMacro(serialization::MacroID ID)

Retrieve the macro with the given ID.

void ReadUndefinedButUsed(llvm::MapVector< NamedDecl *, SourceLocation > &Undefined) override

Load the set of used but not defined functions or variables with internal linkage,...

void ReadDelegatingConstructors(SmallVectorImpl< CXXConstructorDecl * > &Decls) override

Read the set of delegating constructors known to the external Sema source.

unsigned getTotalNumTypes() const

Returns the number of types found in the chain.

QualType GetType(serialization::TypeID ID)

Resolve a type ID into a type, potentially building a new type.

void addPendingMacro(IdentifierInfo *II, ModuleFile *M, uint32_t MacroDirectivesOffset)

Add a macro to deserialize its macro directive history.

SourceRange ReadSourceRange(ModuleFile &F, const RecordData &Record, unsigned &Idx, LocSeq *Seq=nullptr)

Read a source range.

GlobalDeclID getGlobalDeclID(ModuleFile &F, LocalDeclID LocalID) const

Map from a local declaration ID within a given module to a global declaration ID.

Expr * ReadExpr(ModuleFile &F)

Reads an expression.

void ReadWeakUndeclaredIdentifiers(SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WeakIDs) override

Read the set of weak, undeclared identifiers known to the external Sema source.

void completeVisibleDeclsMap(const DeclContext *DC) override

Load all external visible decls in the given DeclContext.

void AssignedLambdaNumbering(CXXRecordDecl *Lambda) override

Notify the external source that a lambda was assigned a mangling number.

void ReadUnusedLocalTypedefNameCandidates(llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override

Read the set of potentially unused typedefs known to the source.

IdentifierResolver & getIdResolver()

Get the identifier resolver used for name lookup / updates in the translation unit scope.

static bool readASTFileControlBlock(StringRef Filename, FileManager &FileMgr, const InMemoryModuleCache &ModuleCache, const PCHContainerReader &PCHContainerRdr, bool FindModuleFileExtensions, ASTReaderListener &Listener, bool ValidateDiagnosticOptions, unsigned ClientLoadCapabilities=ARR_ConfigurationMismatch|ARR_OutOfDate)

Read the control block for the named AST file.

void ReadExtVectorDecls(SmallVectorImpl< TypedefNameDecl * > &Decls) override

Read the set of ext_vector type declarations known to the external Sema source.

SmallVector< GlobalDeclID, 16 > PreloadedDeclIDs

std::pair< SourceLocation, StringRef > getModuleImportLoc(int ID) override

Retrieve the module import location and module name for the given source manager entry ID.

void ReadUnusedFileScopedDecls(SmallVectorImpl< const DeclaratorDecl * > &Decls) override

Read the set of unused file-scope declarations known to the external Sema source.

void ReadReferencedSelectors(SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override

Read the set of referenced selectors known to the external Sema source.

Selector DecodeSelector(serialization::SelectorID Idx)

ASTReadResult ReadAST(StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, unsigned ClientLoadCapabilities, ModuleFile **NewLoadedModuleFile=nullptr)

Load the AST file designated by the given file name.

StringRef getOriginalSourceFile()

Retrieve the name of the original source file name for the primary module file.

std::string ReadPath(ModuleFile &F, const RecordData &Record, unsigned &Idx)

ASTDeserializationListener * getDeserializationListener()

Get the AST deserialization listener.

void addListener(std::unique_ptr< ASTReaderListener > L)

Add an AST callback listener.

unsigned getModuleFileID(ModuleFile *M)

Get an ID for the given module file.

Decl * getKeyDeclaration(Decl *D)

Returns the first key declaration for the given declaration.

bool FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name, const DeclContext *OriginalDC) override

Finds all the visible declarations with a given name.

void setListener(std::unique_ptr< ASTReaderListener > Listener)

Set the AST callbacks listener.

Selector ReadSelector(ModuleFile &M, const RecordData &Record, unsigned &Idx)

ModuleManager::ModuleReverseIterator ModuleReverseIterator

IdentifierInfo * DecodeIdentifierInfo(serialization::IdentifierID ID)

ASTReadResult

The result of reading the control block of an AST file, which can fail for various reasons.

@ Success

The control block was read successfully.

@ ConfigurationMismatch

The AST file was written with a different language/target configuration.

@ OutOfDate

The AST file is out-of-date relative to its input files, and needs to be regenerated.

@ Failure

The AST file itself appears corrupted.

@ VersionMismatch

The AST file was written by a different version of Clang.

@ HadErrors

The AST file has errors.

@ Missing

The AST file was missing.

void addInMemoryBuffer(StringRef &FileName, std::unique_ptr< llvm::MemoryBuffer > Buffer)

Add in-memory (virtual file) buffer.

static VersionTuple ReadVersionTuple(const RecordData &Record, unsigned &Idx)

Read a version tuple.

SmallString< 0 > & getPathBuf()

Get the buffer for resolving paths.

Token ReadToken(ModuleFile &M, const RecordDataImpl &Record, unsigned &Idx)

Reads a token out of a record.

SwitchCase * getSwitchCaseWithID(unsigned ID)

Retrieve the switch-case statement with the given ID.

serialization::IdentifierID getGlobalIdentifierID(ModuleFile &M, uint64_t LocalID)

FileID TranslateFileID(ModuleFile &F, FileID FID) const

Translate a FileID from another module file's FileID space into ours.

void ReadLateParsedTemplates(llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap) override

Read the set of late parsed template functions for this source.

IdentifierIterator * getIdentifiers() override

Retrieve an iterator into the set of all identifiers in all loaded AST files.

void ReadUsedVTables(SmallVectorImpl< ExternalVTableUse > &VTables) override

Read the set of used vtables known to the external Sema source.

bool isGlobalIndexUnavailable() const

Determine whether we tried to load the global index, but failed, e.g., because it is out-of-date or d...

uint32_t GetNumExternalSelectors() override

Returns the number of selectors known to the external AST source.

static TemporarilyOwnedStringRef ResolveImportedPath(SmallString< 0 > &Buf, StringRef Path, ModuleFile &ModF)

Resolve Path in the context of module file M.

void updateOutOfDateSelector(Selector Sel) override

Load the contents of the global method pool for a given selector if necessary.

Decl * GetExistingDecl(GlobalDeclID ID)

Resolve a declaration ID into a declaration.

Stmt * ReadStmt(ModuleFile &F)

Reads a statement.

static llvm::BitVector ReadBitVector(const RecordData &Record, const StringRef Blob)

ModuleFile * getLocalModuleFile(ModuleFile &M, unsigned ID) const

Retrieve the module file with a given local ID within the specified ModuleFile.

void ForgetSema() override

Inform the semantic consumer that Sema is no longer available.

DiagnosticsEngine & getDiags() const

void LoadSelector(Selector Sel)

Load a selector from disk, registering its ID if it exists.

void ReadPragmaDiagnosticMappings(DiagnosticsEngine &Diag)

void makeNamesVisible(const HiddenNames &Names, Module *Owner)

Make the names within this set of hidden names visible.

void UpdateSema()

Update the state of Sema after loading some additional modules.

Decl * GetDecl(GlobalDeclID ID)

Resolve a declaration ID into a declaration, potentially building a new declaration.

Decl * GetLocalDecl(ModuleFile &F, LocalDeclID LocalID)

Reads a declaration with the given local ID in the given module.

bool isProcessingUpdateRecords()

T * GetLocalDeclAs(ModuleFile &F, LocalDeclID LocalID)

Reads a declaration with the given local ID in the given module.

ASTReader(Preprocessor &PP, InMemoryModuleCache &ModuleCache, ASTContext *Context, const PCHContainerReader &PCHContainerRdr, ArrayRef< std::shared_ptr< ModuleFileExtension > > Extensions, StringRef isysroot="", DisableValidationForModuleKind DisableValidationKind=DisableValidationForModuleKind::None, bool AllowASTWithCompilerErrors=false, bool AllowConfigurationMismatch=false, bool ValidateSystemInputs=false, bool ValidateASTInputFilesContent=false, bool UseGlobalIndex=true, std::unique_ptr< llvm::Timer > ReadTimer={})

Load the AST file and validate its contents against the given Preprocessor.

int getSLocEntryID(SourceLocation::UIntTy SLocOffset) override

Get the index ID for the loaded SourceLocation offset.

void ReadPendingInstantiations(SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override

Read the set of pending instantiations known to the external Sema source.

Preprocessor & getPreprocessor() const

Retrieve the preprocessor.

serialization::reader::LazySpecializationInfoLookupTable * getLoadedSpecializationsLookupTables(const Decl *D, bool IsPartial)

Get the loaded specializations lookup tables for D, if any.

CXXTemporary * ReadCXXTemporary(ModuleFile &F, const RecordData &Record, unsigned &Idx)

void ReadKnownNamespaces(SmallVectorImpl< NamespaceDecl * > &Namespaces) override

Load the set of namespaces that are known to the external source, which will be used during typo corr...

const Decl * getKeyDeclaration(const Decl *D)

ModuleManager::ModuleConstIterator ModuleConstIterator

Module * getSubmodule(serialization::SubmoduleID GlobalID)

Retrieve the submodule that corresponds to a global submodule ID.

void PrintStats() override

Print some statistics about AST usage.

void mergeDefinitionVisibility(NamedDecl *Def, NamedDecl *MergedDef)

Note that MergedDef is a redefinition of the canonical definition Def, so Def should be visible whene...

serialization::SelectorID getGlobalSelectorID(ModuleFile &M, unsigned LocalID) const

Retrieve the global selector ID that corresponds to this the local selector ID in a given module.

void runWithSufficientStackSpace(SourceLocation Loc, llvm::function_ref< void()> Fn)

SmallVector< uint64_t, 64 > RecordData

unsigned getTotalNumMacros() const

Returns the number of macros found in the chain.

FileID ReadFileID(ModuleFile &F, const RecordDataImpl &Record, unsigned &Idx) const

Read a FileID.

void StartedDeserializing() override

Notify ASTReader that we started deserialization of a decl or type so until FinishedDeserializing is ...

void ReadMethodPool(Selector Sel) override

Load the contents of the global method pool for a given selector.

void InitializeContext()

Initializes the ASTContext.

CXXBaseSpecifier * GetExternalCXXBaseSpecifiers(uint64_t Offset) override

Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.

std::unique_ptr< ASTReaderListener > takeListener()

Take the AST callbacks listener.

const serialization::reader::DeclContextLookupTable * getTULocalLookupTables(DeclContext *Primary) const

void resetForReload()

Reset reader for a reload try.

FileManager & getFileManager() const

unsigned getTotalNumDecls() const

Returns the number of declarations found in the chain.

static bool isAcceptableASTFile(StringRef Filename, FileManager &FileMgr, const InMemoryModuleCache &ModuleCache, const PCHContainerReader &PCHContainerRdr, const LangOptions &LangOpts, const TargetOptions &TargetOpts, const PreprocessorOptions &PPOpts, StringRef ExistingModuleCachePath, bool RequireStrictOptionMatches=false)

Determine whether the given AST file is acceptable to load into a translation unit with the given lan...

void FinishedDeserializing() override

Notify ASTReader that we finished the deserialization of a decl or type.

IdentifierInfo * readIdentifier(ModuleFile &M, const RecordData &Record, unsigned &Idx)

void updateOutOfDateIdentifier(const IdentifierInfo &II) override

Update an out-of-date identifier.

void ReadDefinedMacros() override

Read the set of macros defined by this external macro source.

GlobalModuleIndex * getGlobalIndex()

Return global module index.

IdentifierInfo * GetIdentifier(serialization::IdentifierID ID) override

Return the identifier associated with the given ID number.

HeaderFileInfo GetHeaderFileInfo(FileEntryRef FE) override

Read the header file information for the given file entry.

SourceLocation ReadSourceLocation(ModuleFile &ModuleFile, const RecordDataImpl &Record, unsigned &Idx, LocSeq *Seq=nullptr)

Read a source location.

serialization::MacroID getGlobalMacroID(ModuleFile &M, unsigned LocalID)

Retrieve the global macro ID corresponding to the given local ID within the given module file.

serialization::ModuleFile ModuleFile

bool hasGlobalIndex() const

Determine whether this AST reader has a global index.

An object for streaming information from a record.

Utility class for loading a ASTContext from an AST file.

Writes an AST file containing the contents of a translation unit.

A simple helper class to unpack an integer to bits and consuming the bits in order.

BitsUnpacker operator=(const BitsUnpacker &)=delete

uint32_t getNextBits(uint32_t Width)

void advance(uint32_t BitsWidth)

bool canGetNextNBits(uint32_t Width) const

BitsUnpacker(BitsUnpacker &&)=delete

BitsUnpacker(const BitsUnpacker &)=delete

void updateValue(uint32_t V)

BitsUnpacker operator=(BitsUnpacker &&)=delete

Represents a base class of a C++ class.

Represents a C++ base or member initializer.

Represents a C++ struct/union/class.

Represents a C++ temporary.

Simple wrapper class for chaining listeners.

bool visitInputFile(StringRef Filename, bool isSystem, bool isOverridden, bool isExplicitModule) override

if needsInputFileVisitation returns true, this is called for each non-system input file of the AST Fi...

std::unique_ptr< ASTReaderListener > takeSecond()

bool ReadFullVersionInformation(StringRef FullVersion) override

Receives the full Clang version information.

bool ReadHeaderSearchOptions(const HeaderSearchOptions &HSOpts, StringRef ModuleFilename, StringRef SpecificModuleCachePath, bool Complain) override

Receives the header search options.

bool ReadFileSystemOptions(const FileSystemOptions &FSOpts, bool Complain) override

Receives the file system options.

std::unique_ptr< ASTReaderListener > takeFirst()

void ReadCounter(const serialization::ModuleFile &M, unsigned Value) override

Receives COUNTER value.

void ReadModuleMapFile(StringRef ModuleMapPath) override

bool ReadLanguageOptions(const LangOptions &LangOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences) override

Receives the language options.

bool ReadTargetOptions(const TargetOptions &TargetOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences) override

Receives the target options.

void ReadModuleName(StringRef ModuleName) override

bool needsInputFileVisitation() override

Returns true if this ASTReaderListener wants to receive the input files of the AST file via visitInpu...

bool ReadPreprocessorOptions(const PreprocessorOptions &PPOpts, StringRef ModuleFilename, bool ReadMacros, bool Complain, std::string &SuggestedPredefines) override

Receives the preprocessor options.

ChainedASTReaderListener(std::unique_ptr< ASTReaderListener > First, std::unique_ptr< ASTReaderListener > Second)

Takes ownership of First and Second.

void readModuleFileExtension(const ModuleFileExtensionMetadata &Metadata) override

Indicates that a particular module file extension has been read.

void visitModuleFile(StringRef Filename, serialization::ModuleKind Kind) override

This is called for each AST file loaded.

bool ReadDiagnosticOptions(IntrusiveRefCntPtr< DiagnosticOptions > DiagOpts, StringRef ModuleFilename, bool Complain) override

Receives the diagnostic options.

bool needsSystemInputFileVisitation() override

Returns true if this ASTReaderListener wants to receive the system input files of the AST file via vi...

A map from continuous integer ranges to some value, with a very specialized interface.

typename Representation::const_iterator const_iterator

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

Decl - This represents one declaration (or definition), e.g.

bool isFromGlobalModule() const

Whether this declaration comes from global module.

ASTContext & getASTContext() const LLVM_READONLY

Kind

Lists the kind of concrete classes of Decl.

bool isFromHeaderUnit() const

Whether this declaration comes from a header unit.

The name of a declaration.

A little helper class used to produce diagnostics.

Concrete class used by the front-end to report problems and issues.

This represents one expression.

RAII class for safely pairing a StartedDeserializing call with FinishedDeserializing.

MemoryBufferSizes getMemoryBufferSizes() const

Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...

An abstract class that should be subclassed by any external source of preprocessing record entries.

Abstract interface for external sources of preprocessor information.

External source of source location entries.

An abstract interface that should be implemented by external AST sources that also provide informatio...

Represents a member of a struct/union/class.

A reference to a FileEntry that includes the name of the file as it was accessed by the FileManager's...

An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...

Implements support for file system lookup, file system caching, and directory search management.

Keeps track of options that affect how file operations are performed.

Represents a function declaration or definition.

A global index for a set of module files, providing information about the identifiers within those mo...

Provides lookups to, and iteration over, IdentiferInfo objects.

One of these records is kept for each identifier that is lexed.

An iterator that walks over all of the known identifiers in the lookup table.

IdentifierResolver - Keeps track of shadowed decls on enclosing scopes.

Implements an efficient mapping from strings to IdentifierInfo nodes.

In-memory cache for modules.

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

static LocalDeclID get(ASTReader &Reader, serialization::ModuleFile &MF, DeclID ID)

Encapsulates the data about a macro definition (e.g.

Describes a module or submodule.

NameVisibilityKind

Describes the visibility of the various names within a particular module.

This represents a decl that may have a name.

This abstract interface provides operations for unwrapping containers for serialized ASTs (precompile...

ASTReaderListener implementation to validate the information of the PCH file against an initialized P...

bool ReadLanguageOptions(const LangOptions &LangOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences) override

Receives the language options.

bool ReadHeaderSearchOptions(const HeaderSearchOptions &HSOpts, StringRef ModuleFilename, StringRef SpecificModuleCachePath, bool Complain) override

Receives the header search options.

bool ReadDiagnosticOptions(IntrusiveRefCntPtr< DiagnosticOptions > DiagOpts, StringRef ModuleFilename, bool Complain) override

Receives the diagnostic options.

PCHValidator(Preprocessor &PP, ASTReader &Reader)

void ReadCounter(const serialization::ModuleFile &M, unsigned Value) override

Receives COUNTER value.

bool ReadPreprocessorOptions(const PreprocessorOptions &PPOpts, StringRef ModuleFilename, bool ReadMacros, bool Complain, std::string &SuggestedPredefines) override

Receives the preprocessor options.

bool ReadTargetOptions(const TargetOptions &TargetOpts, StringRef ModuleFilename, bool Complain, bool AllowCompatibleDifferences) override

Receives the target options.

Base class that describes a preprocessed entity, which may be a preprocessor directive or macro expan...

PreprocessorOptions - This class is used for passing the various options used in preprocessor initial...

Engages in a tight little dance with the lexer to efficiently preprocess tokens.

A (possibly-)qualified type.

Smart pointer class that efficiently represents Objective-C method names.

static AlignPackInfo getFromRawEncoding(unsigned Encoding)

Sema - This implements semantic analysis and AST building for C.

ASTReaderListenter implementation to set SuggestedPredefines of ASTReader which is required to use a ...

SimpleASTReaderListener(Preprocessor &PP)

bool ReadPreprocessorOptions(const PreprocessorOptions &PPOpts, StringRef ModuleFilename, bool ReadMacros, bool Complain, std::string &SuggestedPredefines) override

Receives the preprocessor options.

static std::pair< SourceLocation, unsigned > decode(RawLocEncoding, SourceLocationSequence *=nullptr)

Serialized encoding of a sequence of SourceLocations.

Encodes a location in the source.

This class handles loading and caching of source files into memory.

bool isLoadedSourceLocation(SourceLocation Loc) const

Returns true if Loc came from a PCH/Module.

A trivial tuple used to represent a source range.

Stmt - This represents one statement.

Options for controlling the target.

Token - This structure provides full information about a lexed token.

The base class of the type hierarchy.

Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...

The input file that has been loaded from this AST file, along with bools indicating whether this was ...

Information about a module that has been loaded by the ASTReader.

int SLocEntryBaseID

The base ID in the source manager's view of this module.

std::string OriginalSourceFileName

The original source file name that was used to build the primary AST file, which may have been modifi...

StringRef ModuleOffsetMap

The module offset map data for this file.

SourceLocation::UIntTy SLocEntryBaseOffset

The base offset in the source manager's view of this module.

llvm::SmallVector< ModuleFile *, 16 > TransitiveImports

List of modules which this modules dependent on.

Manages the set of modules loaded by an AST reader.

ModuleFile & getPrimaryModule()

Returns the primary module associated with the manager, that is, the first module loaded.

llvm::pointee_iterator< SmallVectorImpl< std::unique_ptr< ModuleFile > >::const_iterator > ModuleConstIterator

void addInMemoryBuffer(StringRef FileName, std::unique_ptr< llvm::MemoryBuffer > Buffer)

Add an in-memory buffer the list of known buffers.

llvm::pointee_iterator< SmallVectorImpl< std::unique_ptr< ModuleFile > >::reverse_iterator > ModuleReverseIterator

llvm::pointee_iterator< SmallVectorImpl< std::unique_ptr< ModuleFile > >::iterator > ModuleIterator

Class that performs lookup for an identifier stored in an AST file.

@ Decl

The l-value was an access to a declared entity or something equivalently strong, like the address of ...

uint64_t TypeID

An ID number that refers to a type in an AST file.

llvm::support::detail::packed_endian_specific_integral< serialization::DeclID, llvm::endianness::native, llvm::support::unaligned > unaligned_decl_id_t

TypeID LocalTypeID

Same with TypeID except that the LocalTypeID is only meaningful with the corresponding ModuleFile.

uint32_t SubmoduleID

An ID number that refers to a submodule in a module file.

uint32_t SelectorID

An ID number that refers to an ObjC selector in an AST file.

uint32_t PreprocessedEntityID

An ID number that refers to an entity in the detailed preprocessing record.

ModuleKind

Specifies the kind of module that has been loaded.

uint64_t IdentifierID

An ID number that refers to an identifier in an AST file.

uint32_t MacroID

An ID number that refers to a macro in an AST file.

The JSON file list parser is used to communicate input to InstallAPI.

@ Seq

'seq' clause, allowed on 'loop' and 'routine' directives.

@ Module

Module linkage, which indicates that the entity can be referred to from other translation units withi...

PredefinedDeclIDs

Predefined declaration IDs.

@ Result

The result type of a method or function.

std::optional< unsigned > getPrimaryModuleHash(const Module *M)

Calculate a hash value for the primary module name of the given module.

const FunctionProtoType * T

DisableValidationForModuleKind

Whether to disable the normal validation performed on precompiled headers and module files when they ...

@ None

Perform validation, don't disable it.

bool shouldSkipCheckingODR(const Decl *D)

std::string getClangFullRepositoryVersion()

Retrieves the full repository version that is an amalgamation of the information in getClangRepositor...

The input file info that has been loaded from an AST file.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4