summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/TargetInfo.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-26 17:57:12 +0000
committerChris Lattner <sabre@nondot.org>2009-04-26 17:57:12 +0000
commitc16d476b30a882fdb3a72f49b5f60cdc27d1aded (patch)
tree048149b31f1c6a1ffe2f9e43108e8e5c41835e59 /clang/lib/Basic/TargetInfo.cpp
parentc3f4c7b1c5e78ba5deb850914681b298567eaeb3 (diff)
downloadbcm5719-llvm-c16d476b30a882fdb3a72f49b5f60cdc27d1aded.tar.gz
bcm5719-llvm-c16d476b30a882fdb3a72f49b5f60cdc27d1aded.zip
pull operands names "[foo]" into ConstraintInfo.
llvm-svn: 70136
Diffstat (limited to 'clang/lib/Basic/TargetInfo.cpp')
-rw-r--r--clang/lib/Basic/TargetInfo.cpp20
1 files changed, 7 insertions, 13 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp
index b8aa5353295..a7241f28642 100644
--- a/clang/lib/Basic/TargetInfo.cpp
+++ b/clang/lib/Basic/TargetInfo.cpp
@@ -204,8 +204,8 @@ bool TargetInfo::validateOutputConstraint(ConstraintInfo &Info) const {
}
bool TargetInfo::resolveSymbolicName(const char *&Name,
- const std::string *OutputNamesBegin,
- const std::string *OutputNamesEnd,
+ ConstraintInfo *OutputConstraints,
+ unsigned NumOutputs,
unsigned &Index) const {
assert(*Name == '[' && "Symbolic name did not start with '['");
Name++;
@@ -220,20 +220,15 @@ bool TargetInfo::resolveSymbolicName(const char *&Name,
std::string SymbolicName(Start, Name - Start);
- Index = 0;
- for (const std::string *it = OutputNamesBegin;
- it != OutputNamesEnd;
- ++it, Index++) {
- if (SymbolicName == *it)
+ for (Index = 0; Index != NumOutputs; ++Index)
+ if (SymbolicName == OutputConstraints[Index].getName())
return true;
- }
return false;
}
-bool TargetInfo::validateInputConstraint(const std::string *OutputNamesBegin,
- const std::string *OutputNamesEnd,
- ConstraintInfo *OutputConstraints,
+bool TargetInfo::validateInputConstraint(ConstraintInfo *OutputConstraints,
+ unsigned NumOutputs,
ConstraintInfo &Info) const {
const char *Name = Info.ConstraintStr.c_str();
@@ -242,7 +237,6 @@ bool TargetInfo::validateInputConstraint(const std::string *OutputNamesBegin,
default:
// Check if we have a matching constraint
if (*Name >= '0' && *Name <= '9') {
- unsigned NumOutputs = OutputNamesEnd - OutputNamesBegin;
unsigned i = *Name - '0';
// Check if matching constraint is out of bounds.
@@ -262,7 +256,7 @@ bool TargetInfo::validateInputConstraint(const std::string *OutputNamesBegin,
break;
case '[': {
unsigned Index = 0;
- if (!resolveSymbolicName(Name, OutputNamesBegin, OutputNamesEnd, Index))
+ if (!resolveSymbolicName(Name, OutputConstraints, NumOutputs, Index))
return false;
break;
OpenPOWER on IntegriCloud