Targets: Add InitializeNativeTargetAsmPrinter(), patch by Jan Sjodin, although
authorDaniel Dunbar <daniel@zuster.org>
Sun, 1 Aug 2010 23:36:18 +0000 (23:36 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sun, 1 Aug 2010 23:36:18 +0000 (23:36 +0000)
rewritten by me to not require updating all the target initialization routine
names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109996 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetSelect.h

index 951e7fa86b5d0fa1bd922dec5202f48ef5618b07..fc3244acd8ee065ed0b87bf5527dff44c8beb712 100644 (file)
@@ -30,6 +30,13 @@ extern "C" {
 #define LLVM_ASM_PRINTER(TargetName) void LLVMInitialize##TargetName##AsmPrinter();
 #include "llvm/Config/AsmPrinters.def"
 
+  // FIXME: Workaround for unfortunate definition of LLVM_NATIVE_ARCH.
+#define LLVM_ASM_PRINTER(TargetName) \
+  static inline void LLVMInitialize##TargetName##TargetAsmPrinter() { \
+    LLVMInitialize##TargetName##AsmPrinter(); \
+  }
+#include "llvm/Config/AsmPrinters.def"
+
   // Declare all of the available assembly parser initialization functions.
 #define LLVM_ASM_PARSER(TargetName) void LLVMInitialize##TargetName##AsmParser();
 #include "llvm/Config/AsmParsers.def"
@@ -109,6 +116,23 @@ namespace llvm {
     return false;
 #undef DoInit
 #undef DoInit2
+#else
+    return true;
+#endif
+  }  
+
+  /// InitializeNativeTargetAsmPrinter - The main program should call
+  /// this function to initialize the native target asm printer.
+  inline bool InitializeNativeTargetAsmPrinter() {
+  // If we have a native target, initialize the corresponding asm printer.
+#ifdef LLVM_NATIVE_ARCH
+#define DoInit2(TARG) \
+    LLVMInitialize ## TARG ## AsmPrinter ();
+#define DoInit(T) DoInit2(T)
+    DoInit(LLVM_NATIVE_ARCH);
+    return false;
+#undef DoInit
+#undef DoInit2
 #else
     return true;
 #endif