diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-26 17:57:12 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-26 17:57:12 +0000 |
commit | c16d476b30a882fdb3a72f49b5f60cdc27d1aded (patch) | |
tree | 048149b31f1c6a1ffe2f9e43108e8e5c41835e59 /clang/lib/Basic/TargetInfo.cpp | |
parent | c3f4c7b1c5e78ba5deb850914681b298567eaeb3 (diff) | |
download | bcm5719-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.cpp | 20 |
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; |