diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp
index 9c86e7b..58b3ab9 100644
--- a/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/lib/Target/ARM/ARMTargetMachine.cpp
@@ -48,6 +48,9 @@
   if (TT.size() >= 6 && std::string(TT.begin(), TT.begin()+6) == "thumb-")
     return 20;
 
+  // If the target triple is something non-thumb, we don't match.
+  if (!TT.empty()) return 0;
+
   if (M.getEndianness()  == Module::LittleEndian &&
       M.getPointerSize() == Module::Pointer32)
     return 10;                                   // Weak match
@@ -94,6 +97,8 @@
   std::string TT = M.getTargetTriple();
   if (TT.size() >= 4 && std::string(TT.begin(), TT.begin()+4) == "arm-")
     return 20;
+  // If the target triple is something non-arm, we don't match.
+  if (!TT.empty()) return 0;
 
   if (M.getEndianness()  == Module::LittleEndian &&
       M.getPointerSize() == Module::Pointer32)
diff --git a/lib/Target/Alpha/AlphaTargetMachine.cpp b/lib/Target/Alpha/AlphaTargetMachine.cpp
index bf7f221..d4137a5 100644
--- a/lib/Target/Alpha/AlphaTargetMachine.cpp
+++ b/lib/Target/Alpha/AlphaTargetMachine.cpp
@@ -35,6 +35,8 @@
   if (TT.size() >= 5 && TT[0] == 'a' && TT[1] == 'l' && TT[2] == 'p' &&
       TT[3] == 'h' && TT[4] == 'a')
     return 20;
+  // If the target triple is something non-alpha, we don't match.
+  if (!TT.empty()) return 0;
 
   if (M.getEndianness()  == Module::LittleEndian &&
       M.getPointerSize() == Module::Pointer64)
diff --git a/lib/Target/IA64/IA64TargetMachine.cpp b/lib/Target/IA64/IA64TargetMachine.cpp
index d65ad3c4..51beaa1 100644
--- a/lib/Target/IA64/IA64TargetMachine.cpp
+++ b/lib/Target/IA64/IA64TargetMachine.cpp
@@ -50,6 +50,8 @@
     if (seenIA64)
       return 20; // strong match
   }
+  // If the target triple is something non-ia64, we don't match.
+  if (!TT.empty()) return 0;
 
 #if defined(__ia64__) || defined(__IA64__)
   return 5;
diff --git a/lib/Target/Mips/MipsTargetMachine.cpp b/lib/Target/Mips/MipsTargetMachine.cpp
index de30284..a85833e 100644
--- a/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/lib/Target/Mips/MipsTargetMachine.cpp
@@ -40,13 +40,14 @@
 
 // return 0 and must specify -march to gen MIPS code.
 unsigned MipsTargetMachine::
-getModuleMatchQuality(const Module &M) 
-{
+getModuleMatchQuality(const Module &M) {
   // We strongly match "mips-*".
   std::string TT = M.getTargetTriple();
   if (TT.size() >= 5 && std::string(TT.begin(), TT.begin()+5) == "mips-")
     return 20;
-  
+  // If the target triple is something non-mips, we don't match.
+  if (!TT.empty()) return 0;
+
   return 0;
 }
 
diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
index acb6191..57c8437 100644
--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -55,6 +55,9 @@
   if (TT.size() >= 8 && std::string(TT.begin(), TT.begin()+8) == "powerpc-")
     return 20;
   
+  // If the target triple is something non-powerpc, we don't match.
+  if (!TT.empty()) return 0;
+  
   if (M.getEndianness()  == Module::BigEndian &&
       M.getPointerSize() == Module::Pointer32)
     return 10;                                   // Weak match
diff --git a/lib/Target/Sparc/SparcTargetMachine.cpp b/lib/Target/Sparc/SparcTargetMachine.cpp
index ac43736..b67c300 100644
--- a/lib/Target/Sparc/SparcTargetMachine.cpp
+++ b/lib/Target/Sparc/SparcTargetMachine.cpp
@@ -39,6 +39,9 @@
   std::string TT = M.getTargetTriple();
   if (TT.size() >= 6 && std::string(TT.begin(), TT.begin()+6) == "sparc-")
     return 20;
+  
+  // If the target triple is something non-sparc, we don't match.
+  if (!TT.empty()) return 0;
 
   if (M.getEndianness()  == Module::BigEndian &&
       M.getPointerSize() == Module::Pointer32)
diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp
index 46e59ac..4d4bd3f 100644
--- a/lib/Target/X86/X86TargetMachine.cpp
+++ b/lib/Target/X86/X86TargetMachine.cpp
@@ -62,6 +62,8 @@
   if (TT.size() >= 5 && TT[0] == 'i' && TT[2] == '8' && TT[3] == '6' &&
       TT[4] == '-' && TT[1] - '3' < 6)
     return 20;
+  // If the target triple is something non-X86, we don't match.
+  if (!TT.empty()) return 0;
 
   if (M.getEndianness()  == Module::LittleEndian &&
       M.getPointerSize() == Module::Pointer32)
@@ -85,6 +87,9 @@
       TT[3] == '6' && TT[4] == '4' && TT[5] == '-')
     return 20;
   
+  // If the target triple is something non-X86-64, we don't match.
+  if (!TT.empty()) return 0;
+
   if (M.getEndianness()  == Module::LittleEndian &&
       M.getPointerSize() == Module::Pointer64)
     return 10;                                   // Weak match
