diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-10 13:44:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-10 13:44:22 +0000 |
commit | 1b08b196ac845675036ac78f3ac927d0a37f707c (patch) | |
tree | 1fbd923674e903831dc097fdb4fdfd64dd6e47b1 /tools | |
parent | 551c698530debaae81139c7c76a29fb762793362 (diff) | |
download | src-1b08b196ac845675036ac78f3ac927d0a37f707c.tar.gz src-1b08b196ac845675036ac78f3ac927d0a37f707c.zip |
Vendor import of clang trunk r305145:vendor/clang/clang-trunk-r305145
Notes
Notes:
svn path=/vendor/clang/dist/; revision=319782
svn path=/vendor/clang/clang-trunk-r305145/; revision=319783; tag=vendor/clang/clang-trunk-r305145
Diffstat (limited to 'tools')
-rw-r--r-- | tools/c-index-test/c-index-test.c | 30 | ||||
-rw-r--r-- | tools/clang-check/ClangCheck.cpp | 3 | ||||
-rw-r--r-- | tools/clang-format/ClangFormat.cpp | 3 | ||||
-rw-r--r-- | tools/clang-offload-bundler/ClangOffloadBundler.cpp | 3 | ||||
-rw-r--r-- | tools/driver/cc1as_main.cpp | 10 | ||||
-rw-r--r-- | tools/libclang/CIndex.cpp | 6 | ||||
-rw-r--r-- | tools/libclang/CXType.cpp | 22 | ||||
-rw-r--r-- | tools/libclang/libclang.exports | 2 |
8 files changed, 67 insertions, 12 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 31ad828a2f10..d25ae117a68a 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -1850,6 +1850,34 @@ int perform_test_reparse_source(int argc, const char **argv, int trials, return result; } +static int perform_single_file_parse(const char *filename) { + CXIndex Idx; + CXTranslationUnit TU; + enum CXErrorCode Err; + int result; + + Idx = clang_createIndex(/* excludeDeclsFromPCH */1, + /* displayDiagnostics=*/1); + + Err = clang_parseTranslationUnit2(Idx, filename, + /*command_line_args=*/NULL, + /*num_command_line_args=*/0, + /*unsaved_files=*/NULL, + /*num_unsaved_files=*/0, + CXTranslationUnit_SingleFileParse, &TU); + if (Err != CXError_Success) { + fprintf(stderr, "Unable to load translation unit!\n"); + describeLibclangFailure(Err); + clang_disposeIndex(Idx); + return 1; + } + + result = perform_test_load(Idx, TU, /*filter=*/"all", /*prefix=*/NULL, FilteredPrintingVisitor, /*PostVisit=*/NULL, + /*CommentSchemaFile=*/NULL); + clang_disposeIndex(Idx); + return result; +} + /******************************************************************************/ /* Logic for testing clang_getCursor(). */ /******************************************************************************/ @@ -4439,6 +4467,8 @@ int cindextest_main(int argc, const char **argv) { return perform_test_load_source(argc - 3, argv + 3, argv[2], I, postVisit); } + else if (argc >= 3 && strcmp(argv[1], "-single-file-parse") == 0) + return perform_single_file_parse(argv[2]); else if (argc >= 4 && strcmp(argv[1], "-test-file-scan") == 0) return perform_file_scan(argv[2], argv[3], argc >= 5 ? argv[4] : 0); diff --git a/tools/clang-check/ClangCheck.cpp b/tools/clang-check/ClangCheck.cpp index dac11ff07771..e190c0721afb 100644 --- a/tools/clang-check/ClangCheck.cpp +++ b/tools/clang-check/ClangCheck.cpp @@ -124,8 +124,7 @@ public: /// \c FixItRewriter. class FixItAction : public clang::FixItAction { public: - bool BeginSourceFileAction(clang::CompilerInstance& CI, - StringRef Filename) override { + bool BeginSourceFileAction(clang::CompilerInstance& CI) override { FixItOpts.reset(new FixItOptions); Rewriter.reset(new FixItRewriter(CI.getDiagnostics(), CI.getSourceManager(), CI.getLangOpts(), FixItOpts.get())); diff --git a/tools/clang-format/ClangFormat.cpp b/tools/clang-format/ClangFormat.cpp index 14bff19a1a0c..f8e2fe186b91 100644 --- a/tools/clang-format/ClangFormat.cpp +++ b/tools/clang-format/ClangFormat.cpp @@ -328,8 +328,7 @@ static bool format(StringRef FileName) { } // namespace format } // namespace clang -static void PrintVersion() { - raw_ostream &OS = outs(); +static void PrintVersion(raw_ostream &OS) { OS << clang::getClangToolFullVersion("clang-format") << '\n'; } diff --git a/tools/clang-offload-bundler/ClangOffloadBundler.cpp b/tools/clang-offload-bundler/ClangOffloadBundler.cpp index 49cdd9546689..95d3fdf14d5e 100644 --- a/tools/clang-offload-bundler/ClangOffloadBundler.cpp +++ b/tools/clang-offload-bundler/ClangOffloadBundler.cpp @@ -915,8 +915,7 @@ static bool UnbundleFiles() { return false; } -static void PrintVersion() { - raw_ostream &OS = outs(); +static void PrintVersion(raw_ostream &OS) { OS << clang::getClangToolFullVersion("clang-offload-bundler") << '\n'; } diff --git a/tools/driver/cc1as_main.cpp b/tools/driver/cc1as_main.cpp index 33d957658cf0..37c14f4a26e1 100644 --- a/tools/driver/cc1as_main.cpp +++ b/tools/driver/cc1as_main.cpp @@ -88,12 +88,13 @@ struct AssemblerInvocation { unsigned NoInitialTextSection : 1; unsigned SaveTemporaryLabels : 1; unsigned GenDwarfForAssembly : 1; - unsigned CompressDebugSections : 1; unsigned RelaxELFRelocations : 1; unsigned DwarfVersion; std::string DwarfDebugFlags; std::string DwarfDebugProducer; std::string DebugCompilationDir; + llvm::DebugCompressionType CompressDebugSections = + llvm::DebugCompressionType::None; std::string MainFileName; /// @} @@ -201,7 +202,9 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, Opts.SaveTemporaryLabels = Args.hasArg(OPT_msave_temp_labels); // Any DebugInfoKind implies GenDwarfForAssembly. Opts.GenDwarfForAssembly = Args.hasArg(OPT_debug_info_kind_EQ); - Opts.CompressDebugSections = Args.hasArg(OPT_compress_debug_sections); + // TODO: base this on -gz instead + if (Args.hasArg(OPT_compress_debug_sections)) + Opts.CompressDebugSections = llvm::DebugCompressionType::GNU; Opts.RelaxELFRelocations = Args.hasArg(OPT_mrelax_relocations); Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 2, Diags); Opts.DwarfDebugFlags = Args.getLastArgValue(OPT_dwarf_debug_flags); @@ -314,8 +317,7 @@ static bool ExecuteAssembler(AssemblerInvocation &Opts, // Ensure MCAsmInfo initialization occurs before any use, otherwise sections // may be created with a combination of default and explicit settings. - if (Opts.CompressDebugSections) - MAI->setCompressDebugSections(DebugCompressionType::DCT_ZlibGnu); + MAI->setCompressDebugSections(Opts.CompressDebugSections); MAI->setRelaxELFRelocations(Opts.RelaxELFRelocations); diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 2d92de19d99c..1ccf6cbd328e 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -3300,12 +3300,14 @@ clang_parseTranslationUnit_Impl(CXIndex CIdx, const char *source_filename, options & CXTranslationUnit_CreatePreambleOnFirstParse; // FIXME: Add a flag for modules. TranslationUnitKind TUKind - = (options & CXTranslationUnit_Incomplete)? TU_Prefix : TU_Complete; + = (options & (CXTranslationUnit_Incomplete | + CXTranslationUnit_SingleFileParse))? TU_Prefix : TU_Complete; bool CacheCodeCompletionResults = options & CXTranslationUnit_CacheCompletionResults; bool IncludeBriefCommentsInCodeCompletion = options & CXTranslationUnit_IncludeBriefCommentsInCodeCompletion; bool SkipFunctionBodies = options & CXTranslationUnit_SkipFunctionBodies; + bool SingleFileParse = options & CXTranslationUnit_SingleFileParse; bool ForSerialization = options & CXTranslationUnit_ForSerialization; // Configure the diagnostics. @@ -3390,7 +3392,7 @@ clang_parseTranslationUnit_Impl(CXIndex CIdx, const char *source_filename, /*CaptureDiagnostics=*/true, *RemappedFiles.get(), /*RemappedFilesKeepOriginalName=*/true, PrecompilePreambleAfterNParses, TUKind, CacheCodeCompletionResults, IncludeBriefCommentsInCodeCompletion, - /*AllowPCHWithCompilerErrors=*/true, SkipFunctionBodies, + /*AllowPCHWithCompilerErrors=*/true, SkipFunctionBodies, SingleFileParse, /*UserFilesAreVolatile=*/true, ForSerialization, CXXIdx->getPCHContainerOperations()->getRawReader().getFormat(), &ErrUnit)); diff --git a/tools/libclang/CXType.cpp b/tools/libclang/CXType.cpp index f20581453e0e..df9aa656b5d9 100644 --- a/tools/libclang/CXType.cpp +++ b/tools/libclang/CXType.cpp @@ -21,6 +21,7 @@ #include "clang/AST/DeclTemplate.h" #include "clang/AST/Expr.h" #include "clang/AST/Type.h" +#include "clang/Basic/AddressSpaces.h" #include "clang/Frontend/ASTUnit.h" using namespace clang; @@ -394,6 +395,27 @@ unsigned clang_isRestrictQualifiedType(CXType CT) { return T.isLocalRestrictQualified(); } +unsigned clang_getAddressSpace(CXType CT) { + QualType T = GetQualType(CT); + + // For non language-specific address space, use separate helper function. + if (T.getAddressSpace() >= LangAS::FirstTargetAddressSpace) { + return T.getQualifiers().getAddressSpaceAttributePrintValue(); + } + return T.getAddressSpace(); +} + +CXString clang_getTypedefName(CXType CT) { + QualType T = GetQualType(CT); + const TypedefType *TT = T->getAs<TypedefType>(); + if (TT) { + TypedefNameDecl *TD = TT->getDecl(); + if (TD) + return cxstring::createDup(TD->getNameAsString().c_str()); + } + return cxstring::createEmpty(); +} + CXType clang_getPointeeType(CXType CT) { QualType T = GetQualType(CT); const Type *TP = T.getTypePtrOrNull(); diff --git a/tools/libclang/libclang.exports b/tools/libclang/libclang.exports index f3758469cb60..187d4749ebc1 100644 --- a/tools/libclang/libclang.exports +++ b/tools/libclang/libclang.exports @@ -147,6 +147,7 @@ clang_findReferencesInFile clang_findReferencesInFileWithBlock clang_formatDiagnostic clang_free +clang_getAddressSpace clang_getAllSkippedRanges clang_getArgType clang_getArrayElementType @@ -259,6 +260,7 @@ clang_getTypeDeclaration clang_getTypeKindSpelling clang_getTypeSpelling clang_getTypedefDeclUnderlyingType +clang_getTypedefName clang_hashCursor clang_indexLoc_getCXSourceLocation clang_indexLoc_getFileLocation |