From 886cd3a38a1b6c22c3dee5cfceb253c8393e91a3 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 27 Jun 2016 09:38:56 +0000 Subject: [PATCH] [sparc] Simplify slow and verbose string matching code to startswith_lower. No functionality change intended, found by cppcheck. PR28274. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273857 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Sparc/LeonPasses.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/Target/Sparc/LeonPasses.cpp b/lib/Target/Sparc/LeonPasses.cpp index 9d39fa2a8c7..2823b6592d4 100755 --- a/lib/Target/Sparc/LeonPasses.cpp +++ b/lib/Target/Sparc/LeonPasses.cpp @@ -169,10 +169,9 @@ bool FixFSMULD::runOnMachineFunction(MachineFunction& MF) Reg3Index = MI.getOperand(2).getReg(); } else if (MI.isInlineAsm()) { - std::string AsmString (MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); - std::string FMULSOpCoode ("fsmuld"); - std::transform(AsmString.begin(), AsmString.end(), AsmString.begin(), ::tolower); - if (AsmString.find(FMULSOpCoode) == 0) { // this is an inline FSMULD instruction + StringRef AsmString( + MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); + if (AsmString.startswith_lower("fsmuld")) { //errs() << "Detected InlineAsm FSMULD\n"; unsigned StartOp = InlineAsm::MIOp_FirstOperand; @@ -281,10 +280,9 @@ bool ReplaceFMULS::runOnMachineFunction(MachineFunction& MF) Reg3Index = MI.getOperand(2).getReg(); } else if (MI.isInlineAsm()) { - std::string AsmString (MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); - std::string FMULSOpCoode ("fmuls"); - std::transform(AsmString.begin(), AsmString.end(), AsmString.begin(), ::tolower); - if (AsmString.find(FMULSOpCoode) == 0) { // this is an inline FMULS instruction + StringRef AsmString( + MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); + if (AsmString.startswith_lower("fmuls")) { //errs() << "Detected InlineAsm FMULS\n"; unsigned StartOp = InlineAsm::MIOp_FirstOperand; @@ -377,15 +375,12 @@ bool FixAllFDIVSQRT::runOnMachineFunction(MachineFunction& MF) unsigned Opcode = MI.getOpcode(); if (MI.isInlineAsm()) { - std::string AsmString (MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); - std::string FSQRTDOpCode ("fsqrtd"); - std::string FDIVDOpCode ("fdivd"); - std::transform(AsmString.begin(), AsmString.end(), AsmString.begin(), ::tolower); - if (AsmString.find(FSQRTDOpCode) == 0) { // this is an inline fsqrts instruction + StringRef AsmString( + MI.getOperand(InlineAsm::MIOp_AsmString).getSymbolName()); + if (AsmString.startswith_lower("fsqrtd")) { //errs() << "Detected InlineAsm FSQRTD\n"; Opcode = SP::FSQRTD; - } - else if (AsmString.find(FDIVDOpCode) == 0) { // this is an inline fsqrts instruction + } else if (AsmString.startswith_lower("fdivd")) { //errs() << "Detected InlineAsm FDIVD\n"; Opcode = SP::FDIVD; } -- 2.50.1