Include the Target& in the TargetMachineRegisterEntry.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 15 Jul 2009 11:23:49 +0000 (11:23 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 15 Jul 2009 11:23:49 +0000 (11:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75772 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachineRegistry.h
lib/Target/TargetMachineRegistry.cpp

index 26b20e65cca99ba371dcdb1942d79ff631d90769..80ff188fac51bf275a13ba50c2868e6c593a5e33 100644 (file)
 
 namespace llvm {
   class Module;
+  class Target;
   class TargetMachine;
 
   struct TargetMachineRegistryEntry {
+    const Target &TheTarget;
     const char *Name;
     const char *ShortDesc;
     TargetMachine *(*CtorFn)(const Module &, const std::string &);
@@ -33,12 +35,12 @@ namespace llvm {
     unsigned (*JITMatchQualityFn)();
 
   public:
-    TargetMachineRegistryEntry(const char *N, const char *SD,
+    TargetMachineRegistryEntry(const Target &T, const char *N, const char *SD,
                       TargetMachine *(*CF)(const Module &, const std::string &),
                                unsigned (*MMF)(const Module &M),
                                unsigned (*JMF)())
-      : Name(N), ShortDesc(SD), CtorFn(CF), ModuleMatchQualityFn(MMF),
-        JITMatchQualityFn(JMF) {}
+      : TheTarget(T), Name(N), ShortDesc(SD), CtorFn(CF), 
+        ModuleMatchQualityFn(MMF), JITMatchQualityFn(JMF) {}
   };
 
   template<>
@@ -78,7 +80,7 @@ namespace llvm {
   template<class TargetMachineImpl>
   struct RegisterTarget {
     RegisterTarget(Target &T, const char *Name, const char *ShortDesc)
-      : Entry(Name, ShortDesc, &Allocator,
+      : Entry(T, Name, ShortDesc, &Allocator,
               &TargetMachineImpl::getModuleMatchQuality,
               &TargetMachineImpl::getJITMatchQuality),
         Node(Entry) {
index 4d4652604f06ddac601e58e6329c42e12c831306..e9887be9237c8206758e871f9789fafbf644d28c 100644 (file)
@@ -28,7 +28,7 @@ TargetMachineRegistry::getClosestStaticTargetForModule(const Module &M,
   if (!T)
     return 0;
   // FIXME: Temporary hack, please remove.
-  return new TargetMachineRegistry::entry(T->Name, T->ShortDesc,
+  return new TargetMachineRegistry::entry(*T, T->Name, T->ShortDesc,
                                           T->TargetMachineCtorFn,
                                           T->ModuleMatchQualityFn,
                                           T->JITMatchQualityFn); 
@@ -43,7 +43,7 @@ TargetMachineRegistry::getClosestTargetForJIT(std::string &Error) {
   if (!T)
     return 0;
   // FIXME: Temporary hack, please remove.
-  return new TargetMachineRegistry::entry(T->Name, T->ShortDesc,
+  return new TargetMachineRegistry::entry(*T, T->Name, T->ShortDesc,
                                           T->TargetMachineCtorFn,
                                           T->ModuleMatchQualityFn,
                                           T->JITMatchQualityFn);