Hi Argyrios, Can you provide more background on what this does. Is it fixing an existing issue or doing something new?
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