Add LLVMInitializeAllTargetInfos for C api, and update
authorDaniel Dunbar <daniel@zuster.org>
Tue, 18 Aug 2009 03:03:27 +0000 (03:03 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 18 Aug 2009 03:03:27 +0000 (03:03 +0000)
LLVMInitializeNativeTarget to initialize target info.
 - Patch by Jose Fonseca.

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

include/llvm-c/Target.h

index bb423bbaadfc3bec18e8dc74ad55d8294a18f53e..43388512e8756685cf2e95969cf71d48a5aa81dc 100644 (file)
@@ -33,9 +33,20 @@ typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef;
 typedef struct LLVMStructLayout *LLVMStructLayoutRef;
 
 /* Declare all of the target-initialization functions that are available. */
+#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##TargetInfo();
+#include "llvm/Config/Targets.def"
+
 #define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target();
 #include "llvm/Config/Targets.def"
 
+/** LLVMInitializeAllTargetInfos - The main program should call this function if
+    it wants access to all available targets that LLVM is configured to
+    support. */
+static inline void LLVMInitializeAllTargetInfos() {
+#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo();
+#include "llvm/Config/Targets.def"
+}
+
 /** LLVMInitializeAllTargets - The main program should call this function if it
     wants to link in all available targets that LLVM is configured to
     support. */
@@ -50,7 +61,9 @@ static inline void LLVMInitializeAllTargets() {
 static inline int LLVMInitializeNativeTarget() {
   /* If we have a native target, initialize it to ensure it is linked in. */
 #ifdef LLVM_NATIVE_ARCH
-#define DoInit2(TARG)   LLVMInitialize ## TARG ()
+#define DoInit2(TARG) \
+  LLVMInitialize ## TARG ## Info ();          \
+  LLVMInitialize ## TARG ()
 #define DoInit(T) DoInit2(T)
   DoInit(LLVM_NATIVE_ARCH);
   return 0;