ARM handle :lower16: and :upper16: after a '#' prefix.

rdar://11252521

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154862 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jim Grosbach
2012-04-16 21:18:46 +00:00
parent 39ac3252e8
commit b8768dc32d

View File

@@ -4526,9 +4526,10 @@ bool ARMAsmParser::parseOperand(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
case AsmToken::Dollar: case AsmToken::Dollar:
case AsmToken::Hash: { case AsmToken::Hash: {
// #42 -> immediate. // #42 -> immediate.
// TODO: ":lower16:" and ":upper16:" modifiers after # before immediate
S = Parser.getTok().getLoc(); S = Parser.getTok().getLoc();
Parser.Lex(); Parser.Lex();
if (Parser.getTok().isNot(AsmToken::Colon)) {
bool isNegative = Parser.getTok().is(AsmToken::Minus); bool isNegative = Parser.getTok().is(AsmToken::Minus);
const MCExpr *ImmVal; const MCExpr *ImmVal;
if (getParser().ParseExpression(ImmVal)) if (getParser().ParseExpression(ImmVal))
@@ -4543,6 +4544,9 @@ bool ARMAsmParser::parseOperand(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
Operands.push_back(ARMOperand::CreateImm(ImmVal, S, E)); Operands.push_back(ARMOperand::CreateImm(ImmVal, S, E));
return false; return false;
} }
// w/ a ':' after the '#', it's just like a plain ':'.
// FALLTHROUGH
}
case AsmToken::Colon: { case AsmToken::Colon: {
// ":lower16:" and ":upper16:" expression prefixes // ":lower16:" and ":upper16:" expression prefixes
// FIXME: Check it's an expression prefix, // FIXME: Check it's an expression prefix,