Don't emit a warning with an input/output parameter. We assume the user knows what they're doing here.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169059 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 3c076ca..6a30ca8 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -3365,6 +3365,7 @@
                                           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 @@
     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;