From 87bdba6d6a1684373c94df0363a3b620de6dab6c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 9 Jul 2007 17:25:29 +0000 Subject: [PATCH] The various "getModuleMatchQuality" implementations should return zero if they see a target triple they don't understand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38463 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMTargetMachine.cpp | 5 +++++ lib/Target/Alpha/AlphaTargetMachine.cpp | 2 ++ lib/Target/IA64/IA64TargetMachine.cpp | 2 ++ lib/Target/Mips/MipsTargetMachine.cpp | 7 ++++--- lib/Target/PowerPC/PPCTargetMachine.cpp | 3 +++ lib/Target/Sparc/SparcTargetMachine.cpp | 3 +++ lib/Target/X86/X86TargetMachine.cpp | 5 +++++ 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 9c86e7b6658..58b3ab98adf 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -48,6 +48,9 @@ unsigned ThumbTargetMachine::getModuleMatchQuality(const Module &M) { 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 @@ unsigned ARMTargetMachine::getModuleMatchQuality(const Module &M) { 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 bf7f22145f5..d4137a5a71b 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.cpp +++ b/lib/Target/Alpha/AlphaTargetMachine.cpp @@ -35,6 +35,8 @@ unsigned AlphaTargetMachine::getModuleMatchQuality(const Module &M) { 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 d65ad3c4e1c..51beaa1ebe1 100644 --- a/lib/Target/IA64/IA64TargetMachine.cpp +++ b/lib/Target/IA64/IA64TargetMachine.cpp @@ -50,6 +50,8 @@ unsigned IA64TargetMachine::getModuleMatchQuality(const Module &M) { 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 de30284e013..a85833ebc0c 100644 --- a/lib/Target/Mips/MipsTargetMachine.cpp +++ b/lib/Target/Mips/MipsTargetMachine.cpp @@ -40,13 +40,14 @@ MipsTargetMachine(const Module &M, const std::string &FS): // 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 acb6191f9e2..57c84370f3c 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -55,6 +55,9 @@ unsigned PPC32TargetMachine::getModuleMatchQuality(const Module &M) { 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 ac43736da02..b67c3009cf8 100644 --- a/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/lib/Target/Sparc/SparcTargetMachine.cpp @@ -39,6 +39,9 @@ unsigned SparcTargetMachine::getModuleMatchQuality(const Module &M) { 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 46e59ac0353..4d4bd3feb43 100644 --- a/lib/Target/X86/X86TargetMachine.cpp +++ b/lib/Target/X86/X86TargetMachine.cpp @@ -62,6 +62,8 @@ unsigned X86_32TargetMachine::getModuleMatchQuality(const Module &M) { 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 @@ unsigned X86_64TargetMachine::getModuleMatchQuality(const Module &M) { 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