]> granicus.if.org Git - llvm/commitdiff
[sparc] Simplify slow and verbose string matching code to startswith_lower.
authorBenjamin Kramer <benny.kra@googlemail.com>
Mon, 27 Jun 2016 09:38:56 +0000 (09:38 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Mon, 27 Jun 2016 09:38:56 +0000 (09:38 +0000)
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

index 9d39fa2a8c72d2c3d37f01b878837db57c1423ad..2823b6592d44f3fc7dca6bbfe877657624375b60 100755 (executable)
@@ -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;
         }