r293416 - [c-index-test] Provide capability for 'c-index-test core' to dump symbol information from a PCH/module file.
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 31 09:08:52 PST 2017
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 <akyrtzi at 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 at 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 at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list