etienneb created this revision. etienneb added reviewers: alexfh, rnk. etienneb added a subscriber: cfe-commits.
Summary: Clang-tidy fails when parsing MSVC inline assembly statements. The native target and asm parser aren't initialized. The following patch is fixing the issue by using the same code than clang-check. The tool clang-check has the following code in main to initialize the required components. // Initialize targets for clang module support. llvm::InitializeAllTargets(); llvm::InitializeAllTargetMCs(); llvm::InitializeAllAsmPrinters(); llvm::InitializeAllAsmParsers(); Apparently, it is sufficient to initialize the native target and the asm parser. see: https://code.google.com/p/chromium/codesearch#chromium/src/tools/clang/rewrite_scoped_refptr/RewriteScopedRefptr.cpp&l=262 llvm::InitializeNativeTarget(); llvm::InitializeNativeTargetAsmParser(); http://reviews.llvm.org/D17981 Files: CMakeLists.txt ClangTidyMain.cpp Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -1,4 +1,5 @@ set(LLVM_LINK_COMPONENTS + ${LLVM_TARGETS_TO_BUILD} support ) Index: ClangTidyMain.cpp =================================================================== --- ClangTidyMain.cpp +++ ClangTidyMain.cpp @@ -18,6 +18,8 @@ #include "../ClangTidy.h" #include "clang/Tooling/CommonOptionsParser.h" #include "llvm/Support/Process.h" +#include "llvm/Support/Signals.h" +#include "llvm/Support/TargetSelect.h" using namespace clang::ast_matchers; using namespace clang::driver; @@ -296,6 +298,14 @@ } static int clangTidyMain(int argc, const char **argv) { + llvm::sys::PrintStackTraceOnErrorSignal(); + + // Initialize targets for clang module support. + llvm::InitializeAllTargets(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmPrinters(); + llvm::InitializeAllAsmParsers(); + CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory, cl::ZeroOrMore);
Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -1,4 +1,5 @@ set(LLVM_LINK_COMPONENTS + ${LLVM_TARGETS_TO_BUILD} support ) Index: ClangTidyMain.cpp =================================================================== --- ClangTidyMain.cpp +++ ClangTidyMain.cpp @@ -18,6 +18,8 @@ #include "../ClangTidy.h" #include "clang/Tooling/CommonOptionsParser.h" #include "llvm/Support/Process.h" +#include "llvm/Support/Signals.h" +#include "llvm/Support/TargetSelect.h" using namespace clang::ast_matchers; using namespace clang::driver; @@ -296,6 +298,14 @@ } static int clangTidyMain(int argc, const char **argv) { + llvm::sys::PrintStackTraceOnErrorSignal(); + + // Initialize targets for clang module support. + llvm::InitializeAllTargets(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmPrinters(); + llvm::InitializeAllAsmParsers(); + CommonOptionsParser OptionsParser(argc, argv, ClangTidyCategory, cl::ZeroOrMore);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits