pull operands names "[foo]" into ConstraintInfo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70136 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp
index b8aa535..a7241f2 100644
--- a/lib/Basic/TargetInfo.cpp
+++ b/lib/Basic/TargetInfo.cpp
@@ -204,8 +204,8 @@
}
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 @@
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 @@
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 @@
break;
case '[': {
unsigned Index = 0;
- if (!resolveSymbolicName(Name, OutputNamesBegin, OutputNamesEnd, Index))
+ if (!resolveSymbolicName(Name, OutputConstraints, NumOutputs, Index))
return false;
break;