[clang-extdef-mapping] register necessary targest for ms-style asm block
authordingfei <fding@feysh.com>
Tue, 18 Jul 2023 09:09:58 +0000 (17:09 +0800)
committerdingfei <fding@feysh.com>
Tue, 18 Jul 2023 09:09:58 +0000 (17:09 +0800)
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 [new file with mode: 0644]
clang/tools/clang-extdef-mapping/CMakeLists.txt
clang/tools/clang-extdef-mapping/ClangExtDefMapGen.cpp

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 (file)
index 0000000..00632d1
--- /dev/null
@@ -0,0 +1,7 @@
+// RUN: clang-extdef-mapping "%s" -- -fasm-blocks 2>&1 | FileCheck %s
+
+void Break() {
+  __asm { int 3 }
+}
+
+// CHECK: {{c:@F@Break .*}}
index 973b68d..e3a2673 100644 (file)
@@ -1,5 +1,8 @@
 set(LLVM_LINK_COMPONENTS
   ${LLVM_TARGETS_TO_BUILD}
+  AllTargetsAsmParsers
+  AllTargetsDescs
+  AllTargetsInfos
   support
   )
 
index 9ad16dc..2d4f398 100644 (file)
@@ -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 <optional>
 #include <sstream>
 #include <string>
@@ -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());
 }