It doesn't appear to be exclusive to i386, maybe release without asserts?: ******************** TEST 'Clang :: Tooling/clang-ast-dump.cpp' FAILED ********************Script: -- clang-ast-dump "/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-R/clang.src/test/Tooling/clang-ast-dump.cpp" -f test_namespace::TheClass::theMethod -- -c 2>&1|FileCheck /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-R/clang.src/test/Tooling/clang-ast-dump.cpp -- Exit Code: 1 Command Output (stderr): -- /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-R/clang.src/test/Tooling/clang-ast-dump.cpp:3:11: error: expected string not found in input // CHECK: <CXXMethod ptr="0x{{[0-9a-f]+}}" name="theMethod" prototype="true"> ^ <stdin>:1:1: note: scanning from here Processing: /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-R/clang.src/test/Tooling/clang-ast-dump.cpp. ^ --
******************** Is there anything I can grab off the builder to help? On 16 Jul 2012, at 1:13 PM, Jim Grosbach wrote: > Hi Alexander, > > This test is failing on i386 (32-bit) Darwin: > >> >> /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.apple-clang-x86_64-darwin10-R/clang.src/src/tools/clang/test/Tooling/clang-ast-dump.cpp:3:11: >> error: expected string not found in input >> // CHECK: <CXXMethod ptr="0x{{[0-9a-f]+}}" name="theMethod" >> prototype="true"> >> ^ > > > Any idea why that would be? It's not obvious to me what's going wrong. > > -Jim > > On Jul 16, 2012, at 5:46 AM, Alexander Kornienko <ale...@google.com> wrote: > >> Author: alexfh >> Date: Mon Jul 16 07:46:48 2012 >> New Revision: 160265 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=160265&view=rev >> Log: >> The new clang-ast-dump tool for selective AST dumping. Moved common >> command-line tool stuff to CommandLineClangTool >> >> Added: >> cfe/trunk/include/clang/Tooling/CommandLineClangTool.h >> cfe/trunk/lib/Tooling/CommandLineClangTool.cpp >> cfe/trunk/test/Tooling/clang-ast-dump.cpp >> cfe/trunk/tools/clang-ast-dump/ >> cfe/trunk/tools/clang-ast-dump/CMakeLists.txt >> cfe/trunk/tools/clang-ast-dump/ClangASTDump.cpp >> cfe/trunk/tools/clang-ast-dump/Makefile >> Modified: >> cfe/trunk/lib/Tooling/CMakeLists.txt >> cfe/trunk/test/CMakeLists.txt >> cfe/trunk/tools/CMakeLists.txt >> cfe/trunk/tools/Makefile >> cfe/trunk/tools/clang-check/ClangCheck.cpp >> >> Added: cfe/trunk/include/clang/Tooling/CommandLineClangTool.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/CommandLineClangTool.h?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/include/clang/Tooling/CommandLineClangTool.h (added) >> +++ cfe/trunk/include/clang/Tooling/CommandLineClangTool.h Mon Jul 16 >> 07:46:48 2012 >> @@ -0,0 +1,80 @@ >> +//===- CommandLineClangTool.h - command-line clang tools driver -*- C++ >> -*-===// >> +// >> +// The LLVM Compiler Infrastructure >> +// >> +// This file is distributed under the University of Illinois Open Source >> +// License. See LICENSE.TXT for details. >> +// >> +//===----------------------------------------------------------------------===// >> +// >> +// This file implements the CommandLineClangTool class used to run clang >> +// tools as separate command-line applications with a consistent common >> +// interface for handling compilation database and input files. >> +// >> +// It provides a common subset of command-line options, common algorithm >> +// for locating a compilation database and source files, and help messages >> +// for the basic command-line interface. >> +// >> +// It creates a CompilationDatabase, initializes a ClangTool and runs a >> +// user-specified FrontendAction over all TUs in which the given files are >> +// compiled. >> +// >> +// This class uses the Clang Tooling infrastructure, see >> +// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html >> +// for details on setting it up with LLVM source tree. >> +// >> +//===----------------------------------------------------------------------===// >> + >> +#ifndef LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H >> +#define LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H >> + >> +#include "llvm/Support/CommandLine.h" >> +#include "clang/Tooling/CompilationDatabase.h" >> + >> +namespace clang { >> + >> +namespace tooling { >> + >> +class CompilationDatabase; >> +class FrontendActionFactory; >> + >> +/// \brief A common driver for command-line Clang tools. >> +/// >> +/// Parses a common subset of command-line arguments, locates and loads a >> +/// compilation commands database, runs a tool with user-specified action. >> It >> +/// also contains a help message for the common command-line options. >> +/// An example of usage: >> +/// @code >> +/// int main(int argc, const char **argv) { >> +/// CommandLineClangTool Tool; >> +/// cl::extrahelp MoreHelp("\nMore help text..."); >> +/// Tool.initialize(argc, argv); >> +/// return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>()); >> +/// } >> +/// @endcode >> +/// >> +class CommandLineClangTool { >> +public: >> + /// Sets up command-line options and help messages. >> + /// Add your own help messages after constructing this tool. >> + CommandLineClangTool(); >> + >> + /// Parses command-line, initializes a compilation database. >> + /// This method exits program in case of error. >> + void initialize(int argc, const char **argv); >> + >> + /// Runs a clang tool with an action created by \c ActionFactory. >> + int run(FrontendActionFactory *ActionFactory); >> + >> +private: >> + llvm::OwningPtr<CompilationDatabase> Compilations; >> + llvm::cl::opt<std::string> BuildPath; >> + llvm::cl::list<std::string> SourcePaths; >> + llvm::cl::extrahelp MoreHelp; >> +}; >> + >> +} // namespace tooling >> + >> +} // namespace clang >> + >> +#endif // LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H >> >> Modified: cfe/trunk/lib/Tooling/CMakeLists.txt >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/CMakeLists.txt?rev=160265&r1=160264&r2=160265&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Tooling/CMakeLists.txt (original) >> +++ cfe/trunk/lib/Tooling/CMakeLists.txt Mon Jul 16 07:46:48 2012 >> @@ -1,6 +1,7 @@ >> set(LLVM_LINK_COMPONENTS support) >> >> add_clang_library(clangTooling >> + CommandLineClangTool.cpp >> CompilationDatabase.cpp >> Refactoring.cpp >> Tooling.cpp >> >> Added: cfe/trunk/lib/Tooling/CommandLineClangTool.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/CommandLineClangTool.cpp?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/lib/Tooling/CommandLineClangTool.cpp (added) >> +++ cfe/trunk/lib/Tooling/CommandLineClangTool.cpp Mon Jul 16 07:46:48 2012 >> @@ -0,0 +1,80 @@ >> +//===--- CommandLineClangTool.cpp - command-line clang tools driver >> -------===// >> +// >> +// The LLVM Compiler Infrastructure >> +// >> +// This file is distributed under the University of Illinois Open Source >> +// License. See LICENSE.TXT for details. >> +// >> +//===----------------------------------------------------------------------===// >> +// >> +// This file implements the CommandLineClangTool class used to run clang >> +// tools as separate command-line applications with a consistent common >> +// interface for handling compilation database and input files. >> +// >> +// It provides a common subset of command-line options, common algorithm >> +// for locating a compilation database and source files, and help messages >> +// for the basic command-line interface. >> +// >> +// It creates a CompilationDatabase, initializes a ClangTool and runs a >> +// user-specified FrontendAction over all TUs in which the given files are >> +// compiled. >> +// >> +//===----------------------------------------------------------------------===// >> + >> +#include "clang/Frontend/FrontendActions.h" >> +#include "clang/Tooling/CommandLineClangTool.h" >> +#include "clang/Tooling/Tooling.h" >> + >> +using namespace clang::tooling; >> +using namespace llvm; >> + >> +static const char *MoreHelpText = >> + "\n" >> + "-p <build-path> is used to read a compile command database.\n" >> + "\n" >> + "\tFor example, it can be a CMake build directory in which a file >> named\n" >> + "\tcompile_commands.json exists (use >> -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n" >> + "\tCMake option to get this output). When no build path is specified,\n" >> + "\tclang-check will attempt to locate it automatically using all >> parent\n" >> + "\tpaths of the first input file. See:\n" >> + "\thttp://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an\n" >> + "\texample of setting up Clang Tooling on a source tree.\n" >> + "\n" >> + "<source0> ... specify the paths of source files. These paths are >> looked\n" >> + "\tup in the compile command database. If the path of a file is >> absolute,\n" >> + "\tit needs to point into CMake's source tree. If the path is >> relative,\n" >> + "\tthe current working directory needs to be in the CMake source tree >> and\n" >> + "\tthe file must be in a subdirectory of the current working >> directory.\n" >> + "\t\"./\" prefixes in the relative files will be automatically >> removed,\n" >> + "\tbut the rest of a relative path must be a suffix of a path in the\n" >> + "\tcompile command database.\n" >> + "\n"; >> + >> +CommandLineClangTool::CommandLineClangTool() : >> + BuildPath("p", cl::desc("Build path"), cl::Optional), >> + SourcePaths(cl::Positional, cl::desc("<source0> [... <sourceN>]"), >> + cl::OneOrMore), >> + MoreHelp(MoreHelpText) { >> +} >> + >> +void CommandLineClangTool::initialize(int argc, const char **argv) { >> + Compilations.reset(FixedCompilationDatabase::loadFromCommandLine(argc, >> argv)); >> + cl::ParseCommandLineOptions(argc, argv); >> + if (!Compilations) { >> + std::string ErrorMessage; >> + if (!BuildPath.empty()) { >> + Compilations.reset(CompilationDatabase::autoDetectFromDirectory( >> + BuildPath, ErrorMessage)); >> + } else { >> + Compilations.reset(CompilationDatabase::autoDetectFromSource( >> + SourcePaths[0], ErrorMessage)); >> + } >> + if (!Compilations) >> + llvm::report_fatal_error(ErrorMessage); >> + } >> +} >> + >> +int CommandLineClangTool::run(FrontendActionFactory *ActionFactory) { >> + ClangTool Tool(*Compilations, SourcePaths); >> + return Tool.run(ActionFactory); >> +} >> >> Modified: cfe/trunk/test/CMakeLists.txt >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CMakeLists.txt?rev=160265&r1=160264&r2=160265&view=diff >> ============================================================================== >> --- cfe/trunk/test/CMakeLists.txt (original) >> +++ cfe/trunk/test/CMakeLists.txt Mon Jul 16 07:46:48 2012 >> @@ -31,7 +31,7 @@ >> set(CLANG_TEST_DEPS >> clang clang-headers >> c-index-test diagtool arcmt-test c-arcmt-test >> - clang-check >> + clang-check clang-ast-dump >> llvm-dis llc opt FileCheck count not >> ) >> set(CLANG_TEST_PARAMS >> @@ -80,7 +80,7 @@ >> COMMENT "Running Clang regression tests" >> DEPENDS clang clang-headers >> c-index-test diagtool arcmt-test c-arcmt-test >> - clang-check >> + clang-check clang-ast-dump >> ) >> set_target_properties(check-clang PROPERTIES FOLDER "Clang tests") >> endif() >> >> Added: cfe/trunk/test/Tooling/clang-ast-dump.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/clang-ast-dump.cpp?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/test/Tooling/clang-ast-dump.cpp (added) >> +++ cfe/trunk/test/Tooling/clang-ast-dump.cpp Mon Jul 16 07:46:48 2012 >> @@ -0,0 +1,22 @@ >> +// RUN: clang-ast-dump "%t/test.cpp" -f test_namespace::TheClass::theMethod >> -- -c 2>&1|FileCheck %s >> +// FIXME: Make the above easier. >> + >> +// CHECK: <CXXMethod ptr="0x{{[0-9a-f]+}}" name="theMethod" >> prototype="true"> >> +// CHECK: <ParmVar ptr="0x{{[0-9a-f]+}}" name="x" initstyle="c"> >> +// CHECK: (CompoundStmt >> +// CHECK-NEXT: (ReturnStmt >> +// CHECK-NEXT: (BinaryOperator >> + >> +namespace test_namespace { >> + >> +class TheClass { >> +public: >> + int theMethod(int x) { >> + return x + x; >> + } >> +}; >> + >> +} >> + >> +// FIXME: This is incompatible to -fms-compatibility. >> +// XFAIL: win32 >> >> Modified: cfe/trunk/tools/CMakeLists.txt >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CMakeLists.txt?rev=160265&r1=160264&r2=160265&view=diff >> ============================================================================== >> --- cfe/trunk/tools/CMakeLists.txt (original) >> +++ cfe/trunk/tools/CMakeLists.txt Mon Jul 16 07:46:48 2012 >> @@ -5,3 +5,4 @@ >> add_subdirectory(diagtool) >> add_subdirectory(driver) >> add_subdirectory(clang-check) >> +add_subdirectory(clang-ast-dump) >> >> Modified: cfe/trunk/tools/Makefile >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/Makefile?rev=160265&r1=160264&r2=160265&view=diff >> ============================================================================== >> --- cfe/trunk/tools/Makefile (original) >> +++ cfe/trunk/tools/Makefile Mon Jul 16 07:46:48 2012 >> @@ -9,7 +9,7 @@ >> >> CLANG_LEVEL := .. >> DIRS := driver libclang c-index-test arcmt-test c-arcmt-test diagtool \ >> - clang-check >> + clang-check clang-ast-dump >> >> include $(CLANG_LEVEL)/../../Makefile.config >> >> >> Added: cfe/trunk/tools/clang-ast-dump/CMakeLists.txt >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-ast-dump/CMakeLists.txt?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/tools/clang-ast-dump/CMakeLists.txt (added) >> +++ cfe/trunk/tools/clang-ast-dump/CMakeLists.txt Mon Jul 16 07:46:48 2012 >> @@ -0,0 +1,8 @@ >> +add_clang_executable(clang-ast-dump >> + ClangASTDump.cpp >> + ) >> + >> +target_link_libraries(clang-ast-dump >> + clangTooling >> + clangBasic >> + ) >> >> Added: cfe/trunk/tools/clang-ast-dump/ClangASTDump.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-ast-dump/ClangASTDump.cpp?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/tools/clang-ast-dump/ClangASTDump.cpp (added) >> +++ cfe/trunk/tools/clang-ast-dump/ClangASTDump.cpp Mon Jul 16 07:46:48 2012 >> @@ -0,0 +1,141 @@ >> +//===- tools/clang-ast-dump/ClangASTDump.cpp - Clang AST Dump tool >> --------===// >> +// >> +// The LLVM Compiler Infrastructure >> +// >> +// This file is distributed under the University of Illinois Open Source >> +// License. See LICENSE.TXT for details. >> +// >> +//===----------------------------------------------------------------------===// >> +// >> +// This file implements a clang-ast-dump tool that dumps specified parts >> +// of an AST of a number of translation units. >> +// >> +// Run with '-help' for details. >> +// >> +// This tool uses the Clang Tooling infrastructure, see >> +// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html >> +// for details on setting it up with LLVM source tree. >> +// >> +//===----------------------------------------------------------------------===// >> + >> +#include "llvm/Support/CommandLine.h" >> +#include "clang/AST/ASTContext.h" >> +#include "clang/AST/ASTConsumer.h" >> +#include "clang/AST/RecursiveASTVisitor.h" >> +#include "clang/Frontend/FrontendActions.h" >> +#include "clang/Tooling/CommandLineClangTool.h" >> +#include "clang/Tooling/Tooling.h" >> + >> +using namespace clang::tooling; >> +using namespace llvm; >> + >> +cl::opt<std::string> FilterString( >> + "f", >> + cl::desc("Filter string"), >> + cl::Optional); >> + >> +cl::opt<bool> ListAll( >> + "l", >> + cl::desc("List all filterable nodes"), >> + cl::init(false), >> + cl::Optional); >> + >> +static const char *MoreHelpText = >> + "-f <filter-string> can be used to dump only AST declaration nodes >> having\n" >> + "\ta certain substring in a qualified name.\n" >> + "\n" >> + "-l \tlists qualified names of all filterable declaration nodes.\n" >> + "\n"; >> + >> +namespace { >> + >> +using namespace clang; >> + >> +class SelectiveDumpVisitor : >> + public RecursiveASTVisitor<SelectiveDumpVisitor> { >> + typedef RecursiveASTVisitor<SelectiveDumpVisitor> base; >> +public: >> + SelectiveDumpVisitor(const std::string &FilterString, bool ListAll) >> + : FilterString(FilterString), ListAll(ListAll) {} >> + >> + ASTConsumer* newASTConsumer() { >> + return new DumpConsumer(this); >> + } >> + >> + bool shouldWalkTypesOfTypeLocs() const { return false; } >> + >> + void Run(TranslationUnitDecl *D) { >> + if (ListAll) { >> + llvm::outs().changeColor(llvm::raw_ostream::BLUE) << >> + "Listing all filterable nodes:\n"; >> + llvm::outs().resetColor(); >> + TraverseDecl(D); >> + return; >> + } >> + >> + if (FilterString.empty()) { >> + llvm::outs().changeColor(llvm::raw_ostream::BLUE) << >> + "Dumping translation unit:\n"; >> + llvm::outs().resetColor(); >> + D->dumpXML(llvm::outs()); >> + return; >> + } >> + >> + TraverseDecl(D); >> + } >> + >> + bool TraverseDecl(Decl *D) { >> + if (ListAll) { >> + std::string Name = getName(D); >> + if (!Name.empty()) >> + llvm::outs() << Name << "\n"; >> + return base::TraverseDecl(D); >> + } >> + >> + if (filterMatches(D)) { >> + llvm::outs().changeColor(llvm::raw_ostream::BLUE) << >> + "Dumping " << getName(D) << ":\n"; >> + llvm::outs().resetColor(); >> + D->dumpXML(llvm::outs()); >> + return true; >> + } >> + return base::TraverseDecl(D); >> + } >> + >> +private: >> + std::string getName(Decl *D) { >> + if (isa<NamedDecl>(D)) >> + return cast<NamedDecl>(D)->getQualifiedNameAsString(); >> + return ""; >> + } >> + bool filterMatches(Decl *D) { >> + return getName(D).find(FilterString) != std::string::npos; >> + } >> + >> + class DumpConsumer : public ASTConsumer { >> + public: >> + DumpConsumer(SelectiveDumpVisitor *Visitor) : Visitor(Visitor) {} >> + >> + virtual void HandleTranslationUnit(ASTContext &Context) { >> + Visitor->Context = &Context; >> + Visitor->Run(Context.getTranslationUnitDecl()); >> + } >> + >> + private: >> + SelectiveDumpVisitor *Visitor; >> + }; >> + >> + ASTContext *Context; >> + std::string FilterString; >> + bool ListAll; >> +}; >> + >> +} // namespace >> + >> +int main(int argc, const char **argv) { >> + CommandLineClangTool Tool; >> + cl::extrahelp MoreHelp(MoreHelpText); >> + Tool.initialize(argc, argv); >> + SelectiveDumpVisitor Dumper(FilterString, ListAll); >> + return Tool.run(newFrontendActionFactory(&Dumper)); >> +} >> >> Added: cfe/trunk/tools/clang-ast-dump/Makefile >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-ast-dump/Makefile?rev=160265&view=auto >> ============================================================================== >> --- cfe/trunk/tools/clang-ast-dump/Makefile (added) >> +++ cfe/trunk/tools/clang-ast-dump/Makefile Mon Jul 16 07:46:48 2012 >> @@ -0,0 +1,23 @@ >> +##===- tools/clang-check/Makefile --------------------------*- Makefile >> -*-===## >> +# >> +# The LLVM Compiler Infrastructure >> +# >> +# This file is distributed under the University of Illinois Open Source >> +# License. See LICENSE.TXT for details. >> +# >> +##===----------------------------------------------------------------------===## >> + >> +CLANG_LEVEL := ../.. >> + >> +TOOLNAME = clang-ast-dump >> +NO_INSTALL = 1 >> + >> +# No plugins, optimize startup time. >> +TOOL_NO_EXPORTS = 1 >> + >> +LINK_COMPONENTS := support mc >> +USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a \ >> + clangTooling.a clangParse.a clangSema.a clangAnalysis.a \ >> + clangEdit.a clangAST.a clangLex.a clangBasic.a >> + >> +include $(CLANG_LEVEL)/Makefile >> >> Modified: cfe/trunk/tools/clang-check/ClangCheck.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-check/ClangCheck.cpp?rev=160265&r1=160264&r2=160265&view=diff >> ============================================================================== >> --- cfe/trunk/tools/clang-check/ClangCheck.cpp (original) >> +++ cfe/trunk/tools/clang-check/ClangCheck.cpp Mon Jul 16 07:46:48 2012 >> @@ -1,4 +1,4 @@ >> -//===- examples/Tooling/ClangCheck.cpp - Clang check tool >> -----------------===// >> +//===- tools/clang-check/ClangCheck.cpp - Clang check tool >> ----------------===// >> // >> // The LLVM Compiler Infrastructure >> // >> @@ -10,75 +10,37 @@ >> // This file implements a clang-check tool that runs the >> // clang::SyntaxOnlyAction over a number of translation units. >> // >> +// This tool uses the Clang Tooling infrastructure, see >> +// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html >> +// for details on setting it up with LLVM source tree. >> +// >> //===----------------------------------------------------------------------===// >> >> #include "llvm/Support/CommandLine.h" >> #include "clang/Frontend/FrontendActions.h" >> -#include "clang/Tooling/CompilationDatabase.h" >> +#include "clang/Tooling/CommandLineClangTool.h" >> #include "clang/Tooling/Tooling.h" >> >> using namespace clang::tooling; >> using namespace llvm; >> >> -cl::opt<std::string> BuildPath( >> - "p", >> - cl::desc("<build-path>"), >> - cl::Optional); >> - >> -cl::list<std::string> SourcePaths( >> - cl::Positional, >> - cl::desc("<source0> [... <sourceN>]"), >> - cl::OneOrMore); >> - >> -static cl::extrahelp MoreHelp( >> - "\n" >> - "<build-path> is used to read a compile command database.\n" >> - "\n" >> - "For example, it can be a CMake build directory in which a file named\n" >> - "compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n" >> - "CMake option to get this output). When no build path is specified,\n" >> - "clang-check will attempt to locate it automatically using all parent\n" >> - "paths of the first input file.\n" >> - "\n" >> - "<source0> ... specify the paths of source files. These paths are >> looked\n" >> - "up in the compile command database. If the path of a file is >> absolute,\n" >> - "it needs to point into CMake's source tree. If the path is relative,\n" >> - "the current working directory needs to be in the CMake source tree >> and\n" >> - "the file must be in a subdirectory of the current working directory.\n" >> - "\"./\" prefixes in the relative files will be automatically removed,\n" >> - "but the rest of a relative path must be a suffix of a path in the\n" >> - "compile command database.\n" >> - "\n" >> - "For example, to use clang-check on all files in a subtree of the >> source\n" >> - "tree, use:\n" >> - "\n" >> - " find path/in/subtree -name '*.cpp'|xargs clang-check\n" >> +static const char *MoreHelpText = >> + "\tFor example, to run clang-check on all files in a subtree of the\n" >> + "\tsource tree, use:\n" >> "\n" >> - "or using a specific build path:\n" >> + "\t find path/in/subtree -name '*.cpp'|xargs clang-check\n" >> "\n" >> - " find path/in/subtree -name '*.cpp'|xargs clang-check -p build/path\n" >> + "\tor using a specific build path:\n" >> "\n" >> - "Note, that path/in/subtree and current directory should follow the\n" >> - "rules described above.\n" >> + "\t find path/in/subtree -name '*.cpp'|xargs clang-check -p >> build/path\n" >> "\n" >> -); >> + "\tNote, that path/in/subtree and current directory should follow the\n" >> + "\trules described above.\n" >> + "\n"; >> >> int main(int argc, const char **argv) { >> - llvm::OwningPtr<CompilationDatabase> Compilations( >> - FixedCompilationDatabase::loadFromCommandLine(argc, argv)); >> - cl::ParseCommandLineOptions(argc, argv); >> - if (!Compilations) { >> - std::string ErrorMessage; >> - if (!BuildPath.empty()) { >> - Compilations.reset( >> - CompilationDatabase::autoDetectFromDirectory(BuildPath, >> ErrorMessage)); >> - } else { >> - Compilations.reset(CompilationDatabase::autoDetectFromSource( >> - SourcePaths[0], ErrorMessage)); >> - } >> - if (!Compilations) >> - llvm::report_fatal_error(ErrorMessage); >> - } >> - ClangTool Tool(*Compilations, SourcePaths); >> + CommandLineClangTool Tool; >> + cl::extrahelp MoreHelp(MoreHelpText); >> + Tool.initialize(argc, argv); >> return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>()); >> } >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ > cfe-commits mailing list > cfe-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits -David _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits