Allow multiple registrations of the same target.

- This doesn't necessarily seem like a good idea, but the JIT unittest
   currently relies on it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75769 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2009-07-15 10:32:44 +00:00
parent aca81c49d9
commit 3fb7eee9c2
2 changed files with 7 additions and 8 deletions

View File

@ -137,7 +137,8 @@ namespace llvm {
/// @name Target Registration
/// @{
/// RegisterTarget - Register the given target.
/// RegisterTarget - Register the given target. Attempts to register a
/// target which has already been registered will be ignored.
///
/// Clients are responsible for ensuring that registration doesn't occur
/// while another thread is attempting to access the registry. Typically

View File

@ -111,15 +111,13 @@ 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;