[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

llvm-svn: 356893
This commit is contained in:
Haojian Wu 2019-03-25 12:49:46 +00:00
parent 478fc5c83e
commit 9ac2859cf2

View File

@ -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;
}