Revert 75762, 75763, 75766..75769, 75772..75775, 75778, 75780, 75782 to repair broken LLVM-GCC build.
Will revert 75770 in the llvm-gcc trunk.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75799 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/TargetRegistry.cpp b/lib/Support/TargetRegistry.cpp
index 77cf2dd..258d703 100644
--- a/lib/Support/TargetRegistry.cpp
+++ b/lib/Support/TargetRegistry.cpp
@@ -111,13 +111,15 @@
                                     Target::TripleMatchQualityFnTy TQualityFn,
                                     Target::ModuleMatchQualityFnTy MQualityFn,
                                     Target::JITMatchQualityFnTy JITQualityFn) {
+  // Note that we don't require the constructor functions already be defined, in
+  // case a module happens to initialize the optional functionality before the
+  // target.
+  assert(!T.Next && !T.Name && !T.ShortDesc && !T.TripleMatchQualityFn &&
+         !T.ModuleMatchQualityFn && !T.JITMatchQualityFn && 
+         "This Target already registered!");
+
   assert(Name && ShortDesc && TQualityFn && MQualityFn && JITQualityFn &&
          "Missing required target information!");
-
-  // Check if this target has already been initialized, we allow this as a
-  // convenience to some clients.
-  if (T.Name)
-    return;
          
   // Add to the list of targets.
   T.Next = FirstTarget;