Don't require Registry specializations to define random static variables.
authorGordon Henriksen <gordonhenriksen@mac.com>
Sun, 17 Aug 2008 19:08:34 +0000 (19:08 +0000)
committerGordon Henriksen <gordonhenriksen@mac.com>
Sun, 17 Aug 2008 19:08:34 +0000 (19:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54902 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/Registry.h
lib/CodeGen/GCMetadataPrinter.cpp
lib/CodeGen/GCStrategy.cpp
lib/Target/TargetMachineRegistry.cpp

index d89425664ab95304db1889759c146a2ca7c77bef..c9fb0a1d3e48c9fe269f958e600c7cf3a659c688 100644 (file)
@@ -44,8 +44,8 @@ namespace llvm {
   public:
     typedef SimpleRegistryEntry<T> entry;
     
-    /// Accessors for .
-    //
+    /// nameof/descof - Accessors for name and description of entries. These are
+    //                  used to generate help for command-line options.
     static const char *nameof(const entry &Entry) { return Entry.getName(); }
     static const char *descof(const entry &Entry) { return Entry.getDesc(); }
   };
@@ -234,6 +234,19 @@ namespace llvm {
     
   };
   
+  
+  template <typename T, typename U>
+  typename Registry<T,U>::node *Registry<T,U>::Head;
+  
+  template <typename T, typename U>
+  typename Registry<T,U>::node *Registry<T,U>::Tail;
+  
+  template <typename T, typename U>
+  typename Registry<T,U>::listener *Registry<T,U>::ListenerHead;
+  
+  template <typename T, typename U>
+  typename Registry<T,U>::listener *Registry<T,U>::ListenerTail;
+  
 }
 
 #endif
index 07ec0bd0359721c525169a7086d76d587b7d0c1a..496450325b3d16b39798cb2629b01652f7b9b8b4 100644 (file)
 
 using namespace llvm;
 
-// -----------------------------------------------------------------------------
-
-template<> GCMetadataPrinterRegistry::node *GCMetadataPrinterRegistry::Head = 0;
-template<> GCMetadataPrinterRegistry::node *GCMetadataPrinterRegistry::Tail = 0;
-template<> GCMetadataPrinterRegistry::listener *
-GCMetadataPrinterRegistry::ListenerHead = 0;
-template<> GCMetadataPrinterRegistry::listener *
-GCMetadataPrinterRegistry::ListenerTail = 0;
-
-// -----------------------------------------------------------------------------
-
 GCMetadataPrinter::GCMetadataPrinter() { }
 
 GCMetadataPrinter::~GCMetadataPrinter() { }
index 26667759964314fee9a8b8449774237e3679c88e..6ca368240d2b737831b2e702205d9cc616eade45 100644 (file)
@@ -88,13 +88,6 @@ namespace {
 
 // -----------------------------------------------------------------------------
 
-template<> GCRegistry::node *GCRegistry::Head = 0;
-template<> GCRegistry::node *GCRegistry::Tail = 0;
-template<> GCRegistry::listener *GCRegistry::ListenerHead = 0;
-template<> GCRegistry::listener *GCRegistry::ListenerTail = 0;
-
-// -----------------------------------------------------------------------------
-
 GCStrategy::GCStrategy() :
   NeededSafePoints(0),
   CustomReadBarriers(false),
index 72e5401422c32c4163ad4fad3818d9f35ad3410f..c1a4777c63140304bbc2b412e877d967697e5b2f 100644 (file)
 #include <algorithm>
 using namespace llvm;
 
-template<> Registry<TargetMachine>::node *Registry<TargetMachine>::Head = 0;
-template<> Registry<TargetMachine>::node *Registry<TargetMachine>::Tail = 0;
-template<> Registry<TargetMachine>::listener *Registry<TargetMachine>::
-ListenerHead = 0;
-template<> Registry<TargetMachine>::listener *Registry<TargetMachine>::
-ListenerTail = 0;
-
 /// getClosestStaticTargetForModule - Given an LLVM module, pick the best target
 /// that is compatible with the module.  If no close target can be found, this
 /// returns null and sets the Error string to a reason.