Author: hokein Date: Mon Mar 25 05:49:46 2019 New Revision: 356893 URL: http://llvm.org/viewvc/llvm-project?rev=356893&view=rev Log: [pp-trace] Use ClangTool in pp-trace, NFC
Summary: This patch partially reverts the commit rL356849. Unfortunately, tooling::createExecutorFromCommandLineArgs doesn't corperate well with our internal infrastructure, which leads failing lit tests. We use ClangTool at the moment, until we find a better solution to smooth it. Reviewers: ioeric Reviewed By: ioeric Subscribers: jdoerfert, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D59764 Modified: clang-tools-extra/trunk/pp-trace/PPTrace.cpp Modified: clang-tools-extra/trunk/pp-trace/PPTrace.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/pp-trace/PPTrace.cpp?rev=356893&r1=356892&r2=356893&view=diff ============================================================================== --- clang-tools-extra/trunk/pp-trace/PPTrace.cpp (original) +++ clang-tools-extra/trunk/pp-trace/PPTrace.cpp Mon Mar 25 05:49:46 2019 @@ -124,13 +124,11 @@ private: int main(int argc, const char **argv) { using namespace clang::pp_trace; - InitLLVM X(argc, argv); - auto Exec = - clang::tooling::createExecutorFromCommandLineArgs(argc, argv, Cat); - if (!Exec) - error(toString(Exec.takeError())); - + auto OptionsParser = clang::tooling::CommonOptionsParser::create( + argc, argv, Cat, llvm::cl::ZeroOrMore); + if (!OptionsParser) + error(toString(OptionsParser.takeError())); // Parse the IgnoreCallbacks list into strings. SmallVector<StringRef, 32> Patterns; FilterType Filters; @@ -139,20 +137,29 @@ int main(int argc, const char **argv) { for (StringRef Pattern : Patterns) { Pattern = Pattern.trim(); bool Enabled = !Pattern.consume_front("-"); - if (Expected<GlobPattern> Pat = GlobPattern::create(Pattern)) + Expected<GlobPattern> Pat = GlobPattern::create(Pattern); + if (Pat) Filters.emplace_back(std::move(*Pat), Enabled); else error(toString(Pat.takeError())); } + // Create the tool and run the compilation. + clang::tooling::ClangTool Tool(OptionsParser->getCompilations(), + OptionsParser->getSourcePathList()); + std::error_code EC; llvm::ToolOutputFile Out(OutputFileName, EC, llvm::sys::fs::F_Text); if (EC) error(EC.message()); + PPTraceFrontendActionFactory Factory(Filters, Out.os()); + int HadErrors = Tool.run(&Factory); + + // If we had errors, exit early. + if (HadErrors) + return HadErrors; - if (auto Err = Exec->get()->execute( - llvm::make_unique<PPTraceFrontendActionFactory>(Filters, Out.os()))) - error(toString(std::move(Err))); Out.keep(); + return 0; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits