clang  6.0.0svn
Classes | Typedefs | Functions | Variables
ASTUnit.cpp File Reference
#include "clang/Frontend/ASTUnit.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclVisitor.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/AST/TypeOrdering.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/MemoryBufferCache.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Basic/VirtualFileSystem.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "clang/Frontend/FrontendOptions.h"
#include "clang/Frontend/MultiplexConsumer.h"
#include "clang/Frontend/Utils.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "clang/Sema/Sema.h"
#include "clang/Serialization/ASTReader.h"
#include "clang/Serialization/ASTWriter.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/Support/CrashRecoveryContext.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Mutex.h"
#include "llvm/Support/MutexGuard.h"
#include "llvm/Support/Timer.h"
#include "llvm/Support/raw_ostream.h"
#include <atomic>
#include <cstdio>
#include <cstdlib>
Include dependency graph for ASTUnit.cpp:

Go to the source code of this file.

Classes

struct  clang::ASTUnit::ASTWriterData
 

Typedefs

typedef ContinuousRangeMap< unsigned, int, 2 > SLocRemap
 

Functions

static unsigned getDeclShowContexts (const NamedDecl *ND, const LangOptions &LangOpts, bool &IsNestedNameSpecifier)
 Determine the set of code-completion contexts in which this declaration should be shown. More...
 
static ASTUnit::StandaloneDiagnostic makeStandaloneDiagnostic (const LangOptions &LangOpts, const StoredDiagnostic &InDiag)
 
static bool isNonDriverDiag (const StoredDiagnostic &StoredDiag)
 
static void checkAndRemoveNonDriverDiags (SmallVectorImpl< StoredDiagnostic > &StoredDiags)
 
static void checkAndSanitizeDiags (SmallVectorImpl< StoredDiagnostic > &StoredDiagnostics, SourceManager &SM)
 
static IntrusiveRefCntPtr< vfs::FileSystemcreateVFSOverlayForPreamblePCH (StringRef PCHFilename, IntrusiveRefCntPtr< vfs::FileSystem > RealFS, IntrusiveRefCntPtr< vfs::FileSystem > VFS)
 
static std::pair< unsigned, unsigned > makeStandaloneRange (CharSourceRange Range, const SourceManager &SM, const LangOptions &LangOpts)
 
static ASTUnit::StandaloneFixIt makeStandaloneFixIt (const SourceManager &SM, const LangOptions &LangOpts, const FixItHint &InFix)
 
static void CalculateHiddenNames (const CodeCompletionContext &Context, CodeCompletionResult *Results, unsigned NumResults, ASTContext &Ctx, llvm::StringSet< llvm::BumpPtrAllocator > &HiddenNames)
 Helper function that computes which global names are hidden by the local code-completion results. More...
 
static bool serializeUnit (ASTWriter &Writer, SmallVectorImpl< char > &Buffer, Sema &S, bool hasErrors, raw_ostream &OS)
 

Variables

const unsigned DefaultPreambleRebuildInterval = 5
 After failing to build a precompiled preamble (due to errors in the source that occurs in the preamble), the number of reparses during which we'll skip even trying to precompile the preamble. More...
 
static std::atomic< unsigned > ActiveASTUnitObjects
 Tracks the number of ASTUnit objects that are currently active. More...
 

Typedef Documentation

◆ SLocRemap

typedef ContinuousRangeMap<unsigned, int, 2> SLocRemap

Definition at line 2275 of file ASTUnit.cpp.

Function Documentation

◆ CalculateHiddenNames()

static void CalculateHiddenNames ( const CodeCompletionContext Context,
CodeCompletionResult Results,
unsigned  NumResults,
ASTContext Ctx,
llvm::StringSet< llvm::BumpPtrAllocator > &  HiddenNames 
)
static

Helper function that computes which global names are hidden by the local code-completion results.

Definition at line 1895 of file ASTUnit.cpp.

◆ checkAndRemoveNonDriverDiags()

static void checkAndRemoveNonDriverDiags ( SmallVectorImpl< StoredDiagnostic > &  StoredDiags)
static

Definition at line 988 of file ASTUnit.cpp.

References isNonDriverDiag().

Referenced by createVFSOverlayForPreamblePCH(), and makeStandaloneDiagnostic().

◆ checkAndSanitizeDiags()

static void checkAndSanitizeDiags ( SmallVectorImpl< StoredDiagnostic > &  StoredDiagnostics,
SourceManager SM 
)
static

Definition at line 996 of file ASTUnit.cpp.

References SM.

Referenced by createVFSOverlayForPreamblePCH().

◆ createVFSOverlayForPreamblePCH()

static IntrusiveRefCntPtr<vfs::FileSystem> createVFSOverlayForPreamblePCH ( StringRef  PCHFilename,
IntrusiveRefCntPtr< vfs::FileSystem RealFS,
IntrusiveRefCntPtr< vfs::FileSystem VFS 
)
static

◆ getDeclShowContexts()

static unsigned getDeclShowContexts ( const NamedDecl ND,
const LangOptions LangOpts,
bool IsNestedNameSpecifier 
)
static

Determine the set of code-completion contexts in which this declaration should be shown.

Definition at line 234 of file ASTUnit.cpp.

◆ isNonDriverDiag()

static bool isNonDriverDiag ( const StoredDiagnostic StoredDiag)
static

◆ makeStandaloneDiagnostic()

static ASTUnit::StandaloneDiagnostic makeStandaloneDiagnostic ( const LangOptions LangOpts,
const StoredDiagnostic InDiag 
)
static

Definition at line 1203 of file ASTUnit.cpp.

References clang::BeginSourceFileFailed, clang::PrecompiledPreamble::Build(), checkAndRemoveNonDriverDiags(), clang::ComputePreambleBounds(), clang::CouldntCreateTargetInfo, clang::CouldntCreateTempFile, clang::CouldntCreateVFSOverlay, clang::CouldntEmitPCH, DefaultPreambleRebuildInterval, clang::ASTUnit::StandaloneDiagnostic::Filename, clang::frontend::FixIt, clang::ASTUnit::StandaloneDiagnostic::FixIts, clang::ASTUnit::getASTContext(), clang::CompilerInstance::getASTContext(), clang::CompilerInvocationBase::getDiagnosticOpts(), clang::ASTUnit::getDiagnostics(), clang::ExternalASTSource::GetExternalDecl(), clang::ASTContext::getExternalSource(), clang::SourceManager::getFileLoc(), clang::SourceManager::getFilename(), clang::SourceManager::getFileOffset(), clang::StoredDiagnostic::getFixIts(), clang::CompilerInvocation::getFrontendOpts(), clang::StoredDiagnostic::getID(), clang::CompilerInstance::getInvocation(), clang::CompilerInvocationBase::getLangOpts(), clang::StoredDiagnostic::getLevel(), clang::StoredDiagnostic::getLocation(), clang::FullSourceLoc::getManager(), clang::StoredDiagnostic::getMessage(), clang::CompilerInstance::getModuleManager(), clang::DiagnosticsEngine::getNumWarnings(), clang::CompilerInstance::getPreprocessorPtr(), clang::StoredDiagnostic::getRanges(), clang::CompilerInstance::getTarget(), clang::CompilerInstance::hadModuleLoaderFatalFailure(), clang::CompilerInstance::hasASTContext(), clang::CompilerInstance::hasInvocation(), clang::CompilerInstance::hasPreprocessor(), clang::CompilerInstance::hasTarget(), clang::ASTUnit::StandaloneDiagnostic::ID, clang::FrontendOptions::Inputs, clang::SourceLocation::isInvalid(), clang::CompilerInvocationBase::LangOpts, clang::ASTUnit::StandaloneDiagnostic::Level, clang::ASTUnit::StandaloneDiagnostic::LocOffset, makeStandaloneFixIt(), makeStandaloneRange(), clang::ASTUnit::StandaloneDiagnostic::Message, clang::PreambleIsEmpty, clang::ProcessWarningOptions(), clang::ASTUnit::StandaloneDiagnostic::Ranges, clang::DiagnosticsEngine::Reset(), clang::CompilerInstance::setFileManager(), clang::DiagnosticsEngine::setNumWarnings(), clang::CompilerInstance::setSourceManager(), clang::PreambleBounds::Size, SM, clang::CompilerInstance::takeASTConsumer(), and clang::CompilerInstance::takeSema().

◆ makeStandaloneFixIt()

static ASTUnit::StandaloneFixIt makeStandaloneFixIt ( const SourceManager SM,
const LangOptions LangOpts,
const FixItHint InFix 
)
static

◆ makeStandaloneRange()

static std::pair<unsigned, unsigned> makeStandaloneRange ( CharSourceRange  Range,
const SourceManager SM,
const LangOptions LangOpts 
)
static

◆ serializeUnit()

static bool serializeUnit ( ASTWriter Writer,
SmallVectorImpl< char > &  Buffer,
Sema S,
bool  hasErrors,
raw_ostream &  OS 
)
static

Definition at line 2246 of file ASTUnit.cpp.

References clang::ASTWriter::WriteAST().

Referenced by clang::ASTUnit::serialize().

Variable Documentation

◆ ActiveASTUnitObjects

std::atomic<unsigned> ActiveASTUnitObjects
static

Tracks the number of ASTUnit objects that are currently active.

Used for debugging purposes only.

Definition at line 183 of file ASTUnit.cpp.

◆ DefaultPreambleRebuildInterval

const unsigned DefaultPreambleRebuildInterval = 5

After failing to build a precompiled preamble (due to errors in the source that occurs in the preamble), the number of reparses during which we'll skip even trying to precompile the preamble.

Definition at line 178 of file ASTUnit.cpp.

Referenced by makeStandaloneDiagnostic().