diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Basic/TargetInfo.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/CGStmt.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp index b89b18b3ae..3257526289 100644 --- a/lib/Basic/TargetInfo.cpp +++ b/lib/Basic/TargetInfo.cpp @@ -364,6 +364,8 @@ bool TargetInfo::validateOutputConstraint(ConstraintInfo &Info) const { break; case '?': // Disparage slightly code. case '!': // Disparage severely. + case '#': // Ignore as constraint. + case '*': // Ignore for choosing register preferences. break; // Pass them. } @@ -483,6 +485,8 @@ bool TargetInfo::validateInputConstraint(ConstraintInfo *OutputConstraints, break; case '?': // Disparage slightly code. case '!': // Disparage severely. + case '#': // Ignore as constraint. + case '*': // Ignore for choosing register preferences. break; // Pass them. } diff --git a/lib/CodeGen/CGStmt.cpp b/lib/CodeGen/CGStmt.cpp index 5c1fea4472..3548dbac6f 100644 --- a/lib/CodeGen/CGStmt.cpp +++ b/lib/CodeGen/CGStmt.cpp @@ -1280,6 +1280,10 @@ SimplifyConstraint(const char *Constraint, const TargetInfo &Target, case '=': // Will see this and the following in mult-alt constraints. case '+': break; + case '#': // Ignore the rest of the constraint alternative. + while (Constraint[1] && Constraint[1] != ',') + Constraint++; + break; case ',': Result += "|"; break; |