summaryrefslogtreecommitdiff
path: root/lib/Support/TargetRegistry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Support/TargetRegistry.cpp')
-rw-r--r--lib/Support/TargetRegistry.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/Support/TargetRegistry.cpp b/lib/Support/TargetRegistry.cpp
index 77cf2dd72c..258d703d16 100644
--- a/lib/Support/TargetRegistry.cpp
+++ b/lib/Support/TargetRegistry.cpp
@@ -111,13 +111,15 @@ void TargetRegistry::RegisterTarget(Target &T,
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;