Hi Hans, > On Jan 31, 2017, at 9:08 AM, Hans Wennborg <h...@chromium.org> wrote: > > Hi Argyrios, > > Can you provide more background on what this does. Is it fixing an > existing issue or doing something new?
On second thought, let’s not get this into the stable branch, this is introducing something new, not fixing an existing issue. > > r293461 is making changes beyond Index/ so I'd like Richard to take a look > too. > > Thanks, > Hans > > On Mon, Jan 30, 2017 at 8:18 AM, Argyrios Kyrtzidis <akyr...@gmail.com> wrote: >> Hi Hans, >> >> Could this go into the stable branch, along with the follow-ups: >> r293461 >> r293463 >> r293466 >> >>> On Jan 28, 2017, at 8:50 PM, Argyrios Kyrtzidis via cfe-commits >>> <cfe-commits@lists.llvm.org> wrote: >>> >>> Author: akirtzidis >>> Date: Sat Jan 28 22:50:35 2017 >>> New Revision: 293416 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=293416&view=rev >>> Log: >>> [c-index-test] Provide capability for 'c-index-test core' to dump symbol >>> information from a PCH/module file. >>> >>> Added: >>> cfe/trunk/test/Index/Core/index-pch.c >>> Modified: >>> cfe/trunk/tools/c-index-test/CMakeLists.txt >>> cfe/trunk/tools/c-index-test/core_main.cpp >>> >>> Added: cfe/trunk/test/Index/Core/index-pch.c >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Core/index-pch.c?rev=293416&view=auto >>> ============================================================================== >>> --- cfe/trunk/test/Index/Core/index-pch.c (added) >>> +++ cfe/trunk/test/Index/Core/index-pch.c Sat Jan 28 22:50:35 2017 >>> @@ -0,0 +1,13 @@ >>> +// RUN: c-index-test core -print-source-symbols -- %s | FileCheck %s >>> +// RUN: %clang_cc1 -emit-pch %s -o %t.pch >>> +// RUN: c-index-test core -print-source-symbols -module-file %t.pch | >>> FileCheck %s >>> + >>> +// CHECK: [[@LINE+1]]:6 | function/C | test1 | [[TEST1_USR:.*]] | >>> [[TEST1_CG:.*]] | Decl | rel: 0 >>> +void test1(); >>> + >>> +// CHECK: [[@LINE+1]]:20 | function/C | test2 | [[TEST2_USR:.*]] | {{.*}} >>> | Def | rel: 0 >>> +static inline void test2() { >>> + // CHECK: [[@LINE+2]]:3 | function/C | test1 | [[TEST1_USR]] | >>> [[TEST1_CG]] | Ref,Call,RelCall,RelCont | rel: 1 >>> + // CHECK-NEXT: RelCall,RelCont | test2 | [[TEST2_USR]] >>> + test1(); >>> +} >>> >>> Modified: cfe/trunk/tools/c-index-test/CMakeLists.txt >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/CMakeLists.txt?rev=293416&r1=293415&r2=293416&view=diff >>> ============================================================================== >>> --- cfe/trunk/tools/c-index-test/CMakeLists.txt (original) >>> +++ cfe/trunk/tools/c-index-test/CMakeLists.txt Sat Jan 28 22:50:35 2017 >>> @@ -24,6 +24,7 @@ else() >>> libclang >>> clangAST >>> clangBasic >>> + clangCodeGen >>> clangFrontend >>> clangIndex >>> ) >>> >>> Modified: cfe/trunk/tools/c-index-test/core_main.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/core_main.cpp?rev=293416&r1=293415&r2=293416&view=diff >>> ============================================================================== >>> --- cfe/trunk/tools/c-index-test/core_main.cpp (original) >>> +++ cfe/trunk/tools/c-index-test/core_main.cpp Sat Jan 28 22:50:35 2017 >>> @@ -7,6 +7,7 @@ >>> // >>> //===----------------------------------------------------------------------===// >>> >>> +#include "clang/CodeGen/ObjectFilePCHContainerOperations.h" >>> #include "clang/Frontend/ASTUnit.h" >>> #include "clang/Frontend/CompilerInstance.h" >>> #include "clang/Frontend/CompilerInvocation.h" >>> @@ -49,6 +50,13 @@ static cl::extrahelp MoreHelp( >>> "invocation\n" >>> ); >>> >>> +static cl::opt<std::string> >>> +ModuleFilePath("module-file", >>> + cl::desc("Path to module file to print symbols from")); >>> +static cl::opt<std::string> >>> + ModuleFormat("fmodule-format", cl::init("raw"), >>> + cl::desc("Container format for clang modules and PCH, 'raw' or >>> 'obj'")); >>> + >>> } >>> } // anonymous namespace >>> >>> @@ -160,6 +168,39 @@ static bool printSourceSymbols(ArrayRef< >>> return false; >>> } >>> >>> +static bool printSourceSymbolsFromModule(StringRef modulePath, >>> + StringRef format) { >>> + FileSystemOptions FileSystemOpts; >>> + auto pchContOps = std::make_shared<PCHContainerOperations>(); >>> + // Register the support for object-file-wrapped Clang modules. >>> + >>> pchContOps->registerReader(llvm::make_unique<ObjectFilePCHContainerReader>()); >>> + auto pchRdr = pchContOps->getReaderOrNull(format); >>> + if (!pchRdr) { >>> + errs() << "unknown module format: " << format << '\n'; >>> + return true; >>> + } >>> + >>> + IntrusiveRefCntPtr<DiagnosticsEngine> Diags = >>> + CompilerInstance::createDiagnostics(new DiagnosticOptions()); >>> + std::unique_ptr<ASTUnit> AU = ASTUnit::LoadFromASTFile( >>> + modulePath, *pchRdr, Diags, >>> + FileSystemOpts, /*UseDebugInfo=*/false, >>> + /*OnlyLocalDecls=*/true, None, >>> + /*CaptureDiagnostics=*/false, >>> + /*AllowPCHWithCompilerErrors=*/true, >>> + /*UserFilesAreVolatile=*/false); >>> + if (!AU) { >>> + errs() << "failed to create TU for: " << modulePath << '\n'; >>> + return true; >>> + } >>> + >>> + auto DataConsumer = std::make_shared<PrintIndexDataConsumer>(outs()); >>> + IndexingOptions IndexOpts; >>> + indexASTUnit(*AU, DataConsumer, IndexOpts); >>> + >>> + return false; >>> +} >>> + >>> //===----------------------------------------------------------------------===// >>> // Helper Utils >>> //===----------------------------------------------------------------------===// >>> @@ -219,6 +260,10 @@ int indextest_core_main(int argc, const >>> } >>> >>> if (options::Action == ActionType::PrintSourceSymbols) { >>> + if (!options::ModuleFilePath.empty()) { >>> + return printSourceSymbolsFromModule(options::ModuleFilePath, >>> + options::ModuleFormat); >>> + } >>> if (CompArgs.empty()) { >>> errs() << "error: missing compiler args; pass '-- <compiler >>> arguments>'\n"; >>> return 1; >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits