r225603 - Basic: The asm constraint '#m' isn't valid, reject it

David Majnemer david.majnemer at gmail.com
Sun Jan 11 01:39:03 PST 2015


Author: majnemer
Date: Sun Jan 11 03:39:03 2015
New Revision: 225603

URL: http://llvm.org/viewvc/llvm-project?rev=225603&view=rev
Log:
Basic: The asm constraint '#m' isn't valid, reject it

Modified:
    cfe/trunk/lib/Basic/TargetInfo.cpp
    cfe/trunk/test/Sema/asm.c

Modified: cfe/trunk/lib/Basic/TargetInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/TargetInfo.cpp?rev=225603&r1=225602&r2=225603&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/TargetInfo.cpp (original)
+++ cfe/trunk/lib/Basic/TargetInfo.cpp Sun Jan 11 03:39:03 2015
@@ -491,6 +491,7 @@ bool TargetInfo::validateOutputConstrain
         Name++;
       if (Name[1] != ',')
         return false;
+      break;
     case '?': // Disparage slightly code.
     case '!': // Disparage severely.
     case '*': // Ignore for choosing register preferences.
@@ -623,9 +624,14 @@ bool TargetInfo::validateInputConstraint
       break;
     case ',': // multiple alternative constraint.  Ignore comma.
       break;
+    case '#': // Ignore as constraint.
+      while (Name[1] && Name[1] != ',')
+        Name++;
+      if (Name[1] != ',')
+        return false;
+      break;
     case '?': // Disparage slightly code.
     case '!': // Disparage severely.
-    case '#': // Ignore as constraint.
     case '*': // Ignore for choosing register preferences.
       break;  // Pass them.
     }

Modified: cfe/trunk/test/Sema/asm.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/asm.c?rev=225603&r1=225602&r2=225603&view=diff
==============================================================================
--- cfe/trunk/test/Sema/asm.c (original)
+++ cfe/trunk/test/Sema/asm.c Sun Jan 11 03:39:03 2015
@@ -183,3 +183,10 @@ void fn3() {
  __asm__(""
           : "+#r"(l)); // expected-error {{invalid output constraint '+#r' in asm}}
 }
+
+void fn4() {
+  int l;
+ __asm__(""
+          : "=r"(l)
+          : "#m"(l)); // expected-error {{invalid input constraint '#m' in asm}}
+}





More information about the cfe-commits mailing list