mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 03:29:40 +00:00
Add compare_lower and equals_lower methods to StringRef. Switch all users of
StringsEqualNoCase (from StringExtras.h) to it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87020 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cf62632d83
commit
05872ea804
@ -97,6 +97,11 @@ namespace llvm {
|
||||
memcmp(Data, RHS.Data, RHS.Length) == 0);
|
||||
}
|
||||
|
||||
/// equals_lower - Check for string equality, ignoring case.
|
||||
bool equals_lower(StringRef RHS) const {
|
||||
return Length == RHS.Length && compare_lower(RHS) == 0;
|
||||
}
|
||||
|
||||
/// compare - Compare two strings; the result is -1, 0, or 1 if this string
|
||||
/// is lexicographically less than, equal to, or greater than the \arg RHS.
|
||||
int compare(StringRef RHS) const {
|
||||
@ -110,6 +115,9 @@ namespace llvm {
|
||||
return Length < RHS.Length ? -1 : 1;
|
||||
}
|
||||
|
||||
/// compare_lower - Compare two strings, ignoring case.
|
||||
int compare_lower(StringRef RHS) const;
|
||||
|
||||
/// str - Get the contents as an std::string.
|
||||
std::string str() const { return std::string(Data, Length); }
|
||||
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
#include "llvm/CodeGen/SelectionDAG.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
@ -2365,7 +2364,7 @@ getRegForInlineAsmConstraint(const std::string &Constraint,
|
||||
assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
|
||||
|
||||
// Remove the braces from around the name.
|
||||
std::string RegName(Constraint.begin()+1, Constraint.end()-1);
|
||||
StringRef RegName(Constraint.data()+1, Constraint.size()-2);
|
||||
|
||||
// Figure out which register class contains this reg.
|
||||
const TargetRegisterInfo *RI = TM.getRegisterInfo();
|
||||
@ -2388,7 +2387,7 @@ getRegForInlineAsmConstraint(const std::string &Constraint,
|
||||
|
||||
for (TargetRegisterClass::iterator I = RC->begin(), E = RC->end();
|
||||
I != E; ++I) {
|
||||
if (StringsEqualNoCase(RegName, RI->getName(*I)))
|
||||
if (RegName.equals_lower(RI->getName(*I)))
|
||||
return std::make_pair(*I, RC);
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,26 @@ using namespace llvm;
|
||||
const size_t StringRef::npos;
|
||||
#endif
|
||||
|
||||
static char ascii_tolower(char x) {
|
||||
if (x >= 'A' && x <= 'Z')
|
||||
return x - 'A' + 'a';
|
||||
return x;
|
||||
}
|
||||
|
||||
/// compare_lower - Compare strings, ignoring case.
|
||||
int StringRef::compare_lower(StringRef RHS) const {
|
||||
for (size_t I = 0, E = std::min(Length, RHS.Length); I != E; ++I) {
|
||||
char LHC = ascii_tolower(Data[I]);
|
||||
char RHC = ascii_tolower(RHS.Data[I]);
|
||||
if (LHC != RHC)
|
||||
return LHC < RHC ? -1 : 1;
|
||||
}
|
||||
|
||||
if (Length == RHS.Length)
|
||||
return 0;
|
||||
return Length < RHS.Length ? -1 : 1;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// String Searching
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -9595,14 +9595,14 @@ X86TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint,
|
||||
}
|
||||
|
||||
// GCC allows "st(0)" to be called just plain "st".
|
||||
if (StringsEqualNoCase("{st}", Constraint)) {
|
||||
if (StringRef("{st}").equals_lower(Constraint)) {
|
||||
Res.first = X86::ST0;
|
||||
Res.second = X86::RFP80RegisterClass;
|
||||
return Res;
|
||||
}
|
||||
|
||||
// flags -> EFLAGS
|
||||
if (StringsEqualNoCase("{flags}", Constraint)) {
|
||||
if (StringRef("{flags}").equals_lower(Constraint)) {
|
||||
Res.first = X86::EFLAGS;
|
||||
Res.second = X86::CCRRegisterClass;
|
||||
return Res;
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/FileUtilities.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Config/config.h" // for HAVE_LINK_R
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
@ -610,9 +609,10 @@ IsARMArchitecture(std::vector<std::string> Args)
|
||||
{
|
||||
for (std::vector<std::string>::const_iterator
|
||||
I = Args.begin(), E = Args.end(); I != E; ++I) {
|
||||
if (!StringsEqualNoCase(*I, "-arch")) {
|
||||
StringRef S(*I);
|
||||
if (!S.equals_lower("-arch")) {
|
||||
++I;
|
||||
if ((I != E) && !StringsEqualNoCase(I->c_str(), "arm", strlen("arm"))) {
|
||||
if (I != E && !S.substr(0, strlen("arm")).equals_lower("arm")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user