aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VMCore/InlineAsm.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/VMCore/InlineAsm.cpp b/lib/VMCore/InlineAsm.cpp
index e4f99f09a5..70d0e3881e 100644
--- a/lib/VMCore/InlineAsm.cpp
+++ b/lib/VMCore/InlineAsm.cpp
@@ -181,6 +181,15 @@ bool InlineAsm::ConstraintInfo::Parse(StringRef Str,
multipleAlternativeIndex++;
pCodes = &multipleAlternatives[multipleAlternativeIndex].Codes;
++I;
+ } else if (*I == '^') {
+ // Multi-letter constraint
+ // These will only occur with the existing multiple alternative
+ // constraints and so we can use the isalpha loop below.
+ StringRef::iterator ConStart = I;
+ while (I != E && isalpha(*I))
+ ++I;
+ pCodes->push_back(std::string(ConStart, I));
+ ++I;
} else {
// Single letter constraint.
pCodes->push_back(std::string(I, I+1));