diff options
author | Stephen Hines <srhines@google.com> | 2014-12-01 14:53:08 -0800 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-12-01 14:53:08 -0800 |
commit | 176edba5311f6eff0cad2631449885ddf4fbc9ea (patch) | |
tree | f45baf023a7673970fc373bcdd0de5dc919905a1 /tools/clang-check | |
parent | 8b939a0498b8d24f4a5d7c6e6ac94ddba75ee933 (diff) | |
download | clang-176edba5311f6eff0cad2631449885ddf4fbc9ea.tar.gz |
Update aosp/master Clang for rebase to r222490.
Change-Id: Ic557ac55e97fbf6ee08771c7b7c3594777b0aefd
Diffstat (limited to 'tools/clang-check')
-rw-r--r-- | tools/clang-check/ClangCheck.cpp | 72 | ||||
-rw-r--r-- | tools/clang-check/Makefile | 2 |
2 files changed, 11 insertions, 63 deletions
diff --git a/tools/clang-check/ClangCheck.cpp b/tools/clang-check/ClangCheck.cpp index cc8d43cec2..d92a8d5518 100644 --- a/tools/clang-check/ClangCheck.cpp +++ b/tools/clang-check/ClangCheck.cpp @@ -28,6 +28,7 @@ #include "llvm/Option/OptTable.h" #include "llvm/Support/Path.h" #include "llvm/Support/Signals.h" +#include "llvm/ADT/STLExtras.h" using namespace clang::driver; using namespace clang::tooling; @@ -77,15 +78,6 @@ static cl::opt<bool> FixWhatYouCan( cl::desc(Options->getOptionHelpText(options::OPT_fix_what_you_can)), cl::cat(ClangCheckCategory)); -static cl::list<std::string> ArgsAfter( - "extra-arg", - cl::desc("Additional argument to append to the compiler command line"), - cl::cat(ClangCheckCategory)); -static cl::list<std::string> ArgsBefore( - "extra-arg-before", - cl::desc("Additional argument to prepend to the compiler command line"), - cl::cat(ClangCheckCategory)); - namespace { // FIXME: Move FixItRewriteInPlace from lib/Rewrite/Frontend/FrontendActions.cpp @@ -139,57 +131,21 @@ public: } }; -class InsertAdjuster: public clang::tooling::ArgumentsAdjuster { -public: - enum Position { BEGIN, END }; - - InsertAdjuster(const CommandLineArguments &Extra, Position Pos) - : Extra(Extra), Pos(Pos) { - } - - InsertAdjuster(const char *Extra, Position Pos) - : Extra(1, std::string(Extra)), Pos(Pos) { - } - - virtual CommandLineArguments - Adjust(const CommandLineArguments &Args) override { - CommandLineArguments Return(Args); - - CommandLineArguments::iterator I; - if (Pos == END) { - I = Return.end(); - } else { - I = Return.begin(); - ++I; // To leave the program name in place - } - - Return.insert(I, Extra.begin(), Extra.end()); - return Return; - } - -private: - const CommandLineArguments Extra; - const Position Pos; -}; - -} // namespace - -// Anonymous namespace here causes problems with gcc <= 4.4 on MacOS 10.6. -// "Non-global symbol: ... can't be a weak_definition" -namespace clang_check { class ClangCheckActionFactory { public: - clang::ASTConsumer *newASTConsumer() { + std::unique_ptr<clang::ASTConsumer> newASTConsumer() { if (ASTList) return clang::CreateASTDeclNodeLister(); if (ASTDump) - return clang::CreateASTDumper(ASTDumpFilter); + return clang::CreateASTDumper(ASTDumpFilter, /*DumpDecls=*/true, + /*DumpLookups=*/false); if (ASTPrint) return clang::CreateASTPrinter(&llvm::outs(), ASTDumpFilter); - return new clang::ASTConsumer(); + return llvm::make_unique<clang::ASTConsumer>(); } }; -} + +} // namespace int main(int argc, const char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(); @@ -200,21 +156,13 @@ int main(int argc, const char **argv) { // Clear adjusters because -fsyntax-only is inserted by the default chain. Tool.clearArgumentsAdjusters(); Tool.appendArgumentsAdjuster(new ClangStripOutputAdjuster()); - if (ArgsAfter.size() > 0) { - Tool.appendArgumentsAdjuster(new InsertAdjuster(ArgsAfter, - InsertAdjuster::END)); - } - if (ArgsBefore.size() > 0) { - Tool.appendArgumentsAdjuster(new InsertAdjuster(ArgsBefore, - InsertAdjuster::BEGIN)); - } // Running the analyzer requires --analyze. Other modes can work with the // -fsyntax-only option. - Tool.appendArgumentsAdjuster(new InsertAdjuster( - Analyze ? "--analyze" : "-fsyntax-only", InsertAdjuster::BEGIN)); + Tool.appendArgumentsAdjuster(new InsertArgumentAdjuster( + Analyze ? "--analyze" : "-fsyntax-only", InsertArgumentAdjuster::BEGIN)); - clang_check::ClangCheckActionFactory CheckFactory; + ClangCheckActionFactory CheckFactory; std::unique_ptr<FrontendActionFactory> FrontendFactory; // Choose the correct factory based on the selected mode. diff --git a/tools/clang-check/Makefile b/tools/clang-check/Makefile index cf088d2689..e98a131de5 100644 --- a/tools/clang-check/Makefile +++ b/tools/clang-check/Makefile @@ -20,6 +20,6 @@ USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a \ clangTooling.a clangParse.a clangSema.a \ clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a \ clangStaticAnalyzerCore.a clangAnalysis.a clangRewriteFrontend.a \ - clangRewriteCore.a clangEdit.a clangAST.a clangLex.a clangBasic.a + clangRewrite.a clangEdit.a clangAST.a clangLex.a clangBasic.a include $(CLANG_LEVEL)/Makefile |