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