diff options
Diffstat (limited to 'tools/libclang')
-rw-r--r-- | tools/libclang/ARCMigrate.cpp | 4 | ||||
-rw-r--r-- | tools/libclang/CIndex.cpp | 17 | ||||
-rw-r--r-- | tools/libclang/CIndexCodeCompletion.cpp | 12 | ||||
-rw-r--r-- | tools/libclang/CIndexer.h | 15 | ||||
-rw-r--r-- | tools/libclang/CXCursor.cpp | 5 | ||||
-rw-r--r-- | tools/libclang/Indexing.cpp | 21 |
6 files changed, 45 insertions, 29 deletions
diff --git a/tools/libclang/ARCMigrate.cpp b/tools/libclang/ARCMigrate.cpp index b0b869b..b597383 100644 --- a/tools/libclang/ARCMigrate.cpp +++ b/tools/libclang/ARCMigrate.cpp @@ -101,9 +101,7 @@ CXRemapping clang_getRemappingsFromFileList(const char **filePaths, } TextDiagnosticBuffer diagBuffer; - SmallVector<StringRef, 32> Files; - for (unsigned i = 0; i != numFiles; ++i) - Files.push_back(filePaths[i]); + SmallVector<StringRef, 32> Files(filePaths, filePaths + numFiles); bool err = arcmt::getFileRemappingsFromFileList(remap->Vec, Files, &diagBuffer); diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 05287bd..2216ec6 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -1879,6 +1879,7 @@ public: void VisitOMPTaskyieldDirective(const OMPTaskyieldDirective *D); void VisitOMPBarrierDirective(const OMPBarrierDirective *D); void VisitOMPTaskwaitDirective(const OMPTaskwaitDirective *D); + void VisitOMPTaskgroupDirective(const OMPTaskgroupDirective *D); void VisitOMPFlushDirective(const OMPFlushDirective *D); void VisitOMPOrderedDirective(const OMPOrderedDirective *D); void VisitOMPAtomicDirective(const OMPAtomicDirective *D); @@ -2478,6 +2479,11 @@ void EnqueueVisitor::VisitOMPTaskwaitDirective(const OMPTaskwaitDirective *D) { VisitOMPExecutableDirective(D); } +void EnqueueVisitor::VisitOMPTaskgroupDirective( + const OMPTaskgroupDirective *D) { + VisitOMPExecutableDirective(D); +} + void EnqueueVisitor::VisitOMPFlushDirective(const OMPFlushDirective *D) { VisitOMPExecutableDirective(D); } @@ -2883,7 +2889,8 @@ enum CXErrorCode clang_createTranslationUnit2(CXIndex CIdx, IntrusiveRefCntPtr<DiagnosticsEngine> Diags = CompilerInstance::createDiagnostics(new DiagnosticOptions()); std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile( - ast_filename, Diags, FileSystemOpts, CXXIdx->getOnlyLocalDecls(), None, + ast_filename, CXXIdx->getPCHContainerOperations(), Diags, FileSystemOpts, + CXXIdx->getOnlyLocalDecls(), None, /*CaptureDiagnostics=*/true, /*AllowPCHWithCompilerErrors=*/true, /*UserFilesAreVolatile=*/true); @@ -3021,7 +3028,8 @@ static void clang_parseTranslationUnit_Impl(void *UserData) { unsigned NumErrors = Diags->getClient()->getNumErrors(); std::unique_ptr<ASTUnit> ErrUnit; std::unique_ptr<ASTUnit> Unit(ASTUnit::LoadFromCommandLine( - Args->data(), Args->data() + Args->size(), Diags, + Args->data(), Args->data() + Args->size(), + CXXIdx->getPCHContainerOperations(), Diags, CXXIdx->getClangResourcesPath(), CXXIdx->getOnlyLocalDecls(), /*CaptureDiagnostics=*/true, *RemappedFiles.get(), /*RemappedFilesKeepOriginalName=*/true, PrecompilePreamble, TUKind, @@ -3262,7 +3270,8 @@ static void clang_reparseTranslationUnit_Impl(void *UserData) { RemappedFiles->push_back(std::make_pair(UF.Filename, MB.release())); } - if (!CXXUnit->Reparse(*RemappedFiles.get())) + if (!CXXUnit->Reparse(CXXIdx->getPCHContainerOperations(), + *RemappedFiles.get())) RTUI->result = CXError_Success; else if (isASTReadError(CXXUnit)) RTUI->result = CXError_ASTReadError; @@ -4260,6 +4269,8 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) { return cxstring::createRef("OMPBarrierDirective"); case CXCursor_OMPTaskwaitDirective: return cxstring::createRef("OMPTaskwaitDirective"); + case CXCursor_OMPTaskgroupDirective: + return cxstring::createRef("OMPTaskgroupDirective"); case CXCursor_OMPFlushDirective: return cxstring::createRef("OMPFlushDirective"); case CXCursor_OMPOrderedDirective: diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index ca167e8..a7b8e29 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -715,14 +715,12 @@ static void clang_codeCompleteAt_Impl(void *UserData) { // Perform completion. AST->CodeComplete(complete_filename, complete_line, complete_column, - RemappedFiles, - (options & CXCodeComplete_IncludeMacros), + RemappedFiles, (options & CXCodeComplete_IncludeMacros), (options & CXCodeComplete_IncludeCodePatterns), - IncludeBriefComments, - Capture, - *Results->Diag, Results->LangOpts, *Results->SourceMgr, - *Results->FileMgr, Results->Diagnostics, - Results->TemporaryBuffers); + IncludeBriefComments, Capture, + CXXIdx->getPCHContainerOperations(), *Results->Diag, + Results->LangOpts, *Results->SourceMgr, *Results->FileMgr, + Results->Diagnostics, Results->TemporaryBuffers); Results->DiagnosticsWrappers.resize(Results->Diagnostics.size()); diff --git a/tools/libclang/CIndexer.h b/tools/libclang/CIndexer.h index cb7c62e..8a306cd 100644 --- a/tools/libclang/CIndexer.h +++ b/tools/libclang/CIndexer.h @@ -16,6 +16,8 @@ #define LLVM_CLANG_TOOLS_LIBCLANG_CINDEXER_H #include "clang-c/Index.h" +#include "clang/Frontend/PCHContainerOperations.h" +#include "clang/Lex/ModuleLoader.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Path.h" #include <vector> @@ -38,11 +40,14 @@ class CIndexer { unsigned Options; // CXGlobalOptFlags. std::string ResourcesPath; + std::shared_ptr<PCHContainerOperations> PCHContainerOps; public: - CIndexer() : OnlyLocalDecls(false), DisplayDiagnostics(false), - Options(CXGlobalOpt_None) { } - + CIndexer(std::shared_ptr<PCHContainerOperations> PCHContainerOps = + std::make_shared<RawPCHContainerOperations>()) + : OnlyLocalDecls(false), DisplayDiagnostics(false), + Options(CXGlobalOpt_None), PCHContainerOps(PCHContainerOps) {} + /// \brief Whether we only want to see "local" declarations (that did not /// come from a previous precompiled header). If false, we want to see all /// declarations. @@ -54,6 +59,10 @@ public: DisplayDiagnostics = Display; } + std::shared_ptr<PCHContainerOperations> getPCHContainerOperations() const { + return PCHContainerOps; + } + unsigned getCXGlobalOptFlags() const { return Options; } void setCXGlobalOptFlags(unsigned options) { Options = options; } diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp index b0446fd..b8bb28e 100644 --- a/tools/libclang/CXCursor.cpp +++ b/tools/libclang/CXCursor.cpp @@ -235,11 +235,13 @@ CXCursor cxcursor::MakeCXCursor(const Stmt *S, const Decl *Parent, case Stmt::CXXUuidofExprClass: case Stmt::ChooseExprClass: case Stmt::DesignatedInitExprClass: + case Stmt::DesignatedInitUpdateExprClass: case Stmt::ExprWithCleanupsClass: case Stmt::ExpressionTraitExprClass: case Stmt::ExtVectorElementExprClass: case Stmt::ImplicitCastExprClass: case Stmt::ImplicitValueInitExprClass: + case Stmt::NoInitExprClass: case Stmt::MaterializeTemporaryExprClass: case Stmt::ObjCIndirectCopyRestoreExprClass: case Stmt::OffsetOfExprClass: @@ -568,6 +570,9 @@ CXCursor cxcursor::MakeCXCursor(const Stmt *S, const Decl *Parent, case Stmt::OMPTaskwaitDirectiveClass: K = CXCursor_OMPTaskwaitDirective; break; + case Stmt::OMPTaskgroupDirectiveClass: + K = CXCursor_OMPTaskgroupDirective; + break; case Stmt::OMPFlushDirectiveClass: K = CXCursor_OMPFlushDirective; break; diff --git a/tools/libclang/Indexing.cpp b/tools/libclang/Indexing.cpp index 0ede684..e356400 100644 --- a/tools/libclang/Indexing.cpp +++ b/tools/libclang/Indexing.cpp @@ -590,8 +590,7 @@ static void clang_indexSourceFile_Impl(void *UserData) { if (index_options & CXIndexOpt_SuppressWarnings) CInvok->getDiagnosticOpts().IgnoreWarnings = true; - ASTUnit *Unit = ASTUnit::create(CInvok.get(), Diags, - CaptureDiagnostics, + ASTUnit *Unit = ASTUnit::create(CInvok.get(), Diags, CaptureDiagnostics, /*UserFilesAreVolatile=*/true); if (!Unit) { ITUI->result = CXError_InvalidArguments; @@ -644,17 +643,13 @@ static void clang_indexSourceFile_Impl(void *UserData) { PPOpts.DetailedRecord = false; DiagnosticErrorTrap DiagTrap(*Diags); - bool Success = ASTUnit::LoadFromCompilerInvocationAction(CInvok.get(), Diags, - IndexAction.get(), - Unit, - Persistent, - CXXIdx->getClangResourcesPath(), - OnlyLocalDecls, - CaptureDiagnostics, - PrecompilePreamble, - CacheCodeCompletionResults, - /*IncludeBriefCommentsInCodeCompletion=*/false, - /*UserFilesAreVolatile=*/true); + bool Success = ASTUnit::LoadFromCompilerInvocationAction( + CInvok.get(), CXXIdx->getPCHContainerOperations(), Diags, + IndexAction.get(), Unit, Persistent, CXXIdx->getClangResourcesPath(), + OnlyLocalDecls, CaptureDiagnostics, PrecompilePreamble, + CacheCodeCompletionResults, + /*IncludeBriefCommentsInCodeCompletion=*/false, + /*UserFilesAreVolatile=*/true); if (DiagTrap.hasErrorOccurred() && CXXIdx->getDisplayDiagnostics()) printDiagsToStderr(Unit); |