isEarlyClobber = false;
isIndirectOutput = false;
hasMatchingInput = false;
+ isCommutative = false;
// Parse the prefix.
if (*I == '~') {
default:
DoneWithModifiers = true;
break;
- case '&':
+ case '&': // Early clobber.
if (Type != isOutput || // Cannot early clobber anything but output.
isEarlyClobber) // Reject &&&&&&
return true;
isEarlyClobber = true;
break;
+ case '%': // Commutative.
+ if (Type == isClobber || // Cannot commute clobbers.
+ isCommutative) // Reject %%%%%
+ return true;
+ isCommutative = true;
+ break;
+ case '#': // Comment.
+ case '*': // Register preferencing.
+ return true; // Not supported.
}
if (!DoneWithModifiers) {