diff options
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 3c076ca4f03..6a30ca84764 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3365,6 +3365,7 @@ public: const char Modifier, unsigned Size) const { bool isOutput = (Constraint[0] == '='); + bool isInOut = (Constraint[0] == '+'); // Strip off constraint modifiers. while (Constraint[0] == '=' || @@ -3377,7 +3378,8 @@ public: case 'r': { switch (Modifier) { default: - return (isOutput && Size >= 32) || Size <= 32; + return isInOut || (isOutput && Size >= 32) || + (!isOutput && !isInOut && Size <= 32); case 'q': // A register of size 32 cannot fit a vector type. return false; |

