diff options
author | Duraid Madina <duraid@octopus.com.au> | 2005-05-09 13:18:34 +0000 |
---|---|---|
committer | Duraid Madina <duraid@octopus.com.au> | 2005-05-09 13:18:34 +0000 |
commit | 8a3042c872a312977550cc16395cd7883cdd9b3c (patch) | |
tree | 2553c35672877776b0e610674beccf80dabb2294 | |
parent | f2c7af2cb06fd1edcbbb66d3c2aa2fc16d798a4f (diff) |
fix and cleanup constmul code a bit, this fixes mediabench/toast and
probably a couple of other tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21814 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/IA64/IA64ISelPattern.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/lib/Target/IA64/IA64ISelPattern.cpp b/lib/Target/IA64/IA64ISelPattern.cpp index 7722ac21df..30520ed289 100644 --- a/lib/Target/IA64/IA64ISelPattern.cpp +++ b/lib/Target/IA64/IA64ISelPattern.cpp @@ -680,11 +680,11 @@ unsigned lefevre(const std::string inString, } for(unsigned i=0; i<u.length(); i++) { - if(u.c_str()[i]=='P' || u.c_str()[i]=='N') + if(u[i]=='P' || u[i]=='N') u.replace(i, 1, "0"); - if(u.c_str()[i]=='p') + if(u[i]=='p') u.replace(i, 1, "P"); - if(u.c_str()[i]=='n') + if(u[i]=='n') u.replace(i, 1, "N"); } @@ -694,21 +694,18 @@ unsigned lefevre(const std::string inString, } else f=false; - bool hit=true; - for(unsigned i=0; i<u.length(); i++) { - if(u[i]!='0') - if(u[i]!='N') { - hit=false; - break; - } - } + int pos=0; + while(u[pos]=='0') + pos++; + + bool hit=(u[pos]=='N'); int g=0; if(hit) { g=1; for(unsigned p=0; p<u.length(); p++) { - bool isP=(u.c_str()[p]=='P'); - bool isN=(u.c_str()[p]=='N'); + bool isP=(u[p]=='P'); + bool isN=(u[p]=='N'); if(isP) u.replace(p, 1, "N"); |