const char Modifier,
unsigned Size) const {
bool isOutput = (Constraint[0] == '=');
+ bool isInOut = (Constraint[0] == '+');
// Strip off constraint modifiers.
while (Constraint[0] == '=' ||
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;
"mrc p15, 0, %0, c9, c13, 2;"
: "=r" (x)
: "r" (bar())); // no warning
+ __asm__ volatile("foo %0, %1"
+ : "+r" (x),
+ "+r" (y)
+ :);
}
// <rdar://problem/12284092>