From 2c651184a2b0ef1b0e24c6536e5befb65a0ae5ce Mon Sep 17 00:00:00 2001 From: dingfei Date: Tue, 18 Jul 2023 17:09:58 +0800 Subject: [PATCH] [clang-extdef-mapping] register necessary targest for ms-style asm block Without targets registered gives: "error: MS-style inline assembly is not available: Unable to find target for this triple (no targets are registered)" Differential Revision: https://reviews.llvm.org/D154983 --- clang/test/Tooling/ms-asm-clang-extdef-mapping.c | 7 +++++++ clang/tools/clang-extdef-mapping/CMakeLists.txt | 3 +++ clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 clang/test/Tooling/ms-asm-clang-extdef-mapping.c diff --git a/clang/test/Tooling/ms-asm-clang-extdef-mapping.c b/clang/test/Tooling/ms-asm-clang-extdef-mapping.c new file mode 100644 index 0000000..00632d1 --- /dev/null +++ b/clang/test/Tooling/ms-asm-clang-extdef-mapping.c @@ -0,0 +1,7 @@ +// RUN: clang-extdef-mapping "%s" -- -fasm-blocks 2>&1 | FileCheck %s + +void Break() { + __asm { int 3 } +} + +// CHECK: {{c:@F@Break .*}} diff --git a/clang/tools/clang-extdef-mapping/CMakeLists.txt b/clang/tools/clang-extdef-mapping/CMakeLists.txt index 973b68d..e3a2673 100644 --- a/clang/tools/clang-extdef-mapping/CMakeLists.txt +++ b/clang/tools/clang-extdef-mapping/CMakeLists.txt @@ -1,5 +1,8 @@ set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsDescs + AllTargetsInfos support ) diff --git a/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp b/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp index 9ad16dc..2d4f398 100644 --- a/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp +++ b/clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp @@ -23,6 +23,7 @@ #include "clang/Tooling/Tooling.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Signals.h" +#include "llvm/Support/TargetSelect.h" #include #include #include @@ -214,6 +215,10 @@ int main(int argc, const char **argv) { } CommonOptionsParser &OptionsParser = ExpectedParser.get(); + llvm::InitializeAllTargetInfos(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmParsers(); + return HandleFiles(OptionsParser.getSourcePathList(), OptionsParser.getCompilations()); } -- 2.7.4