[llvm] r179339 - [ms-inline asm] Add support for using offsetof operator with variables that use
Chad Rosier
mcrosier at apple.com
Thu Apr 11 16:37:34 PDT 2013
Author: mcrosier
Date: Thu Apr 11 18:37:34 2013
New Revision: 179339
URL: http://llvm.org/viewvc/llvm-project?rev=179339&view=rev
Log:
[ms-inline asm] Add support for using offsetof operator with variables that use
namespace alias qualifiers. Test case coming on clang side shortly.
Part of rdar://13499009
Modified:
llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=179339&r1=179338&r2=179339&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Thu Apr 11 18:37:34 2013
@@ -1411,9 +1411,14 @@ X86Operand *X86AsmParser::ParseIntelOffs
const MCExpr *Val;
SMLoc Start = Tok.getLoc(), End;
+ StringRef Identifier = Tok.getString();
if (getParser().parsePrimaryExpr(Val, End))
return ErrorOperand(Start, "Unable to parse expression!");
+ const MCExpr *Disp = 0;
+ if (X86Operand *Err = ParseIntelVarWithQualifier(Disp, Identifier))
+ return Err;
+
// Don't emit the offset operator.
InstInfo->AsmRewrites->push_back(AsmRewrite(AOK_Skip, OffsetOfLoc, 7));
@@ -1421,10 +1426,8 @@ X86Operand *X86AsmParser::ParseIntelOffs
// register operand to ensure proper matching. Just pick a GPR based on
// the size of a pointer.
unsigned RegNo = is64BitMode() ? X86::RBX : X86::EBX;
- unsigned Len = End.getPointer() - Start.getPointer();
- StringRef SymName(Start.getPointer(), Len);
return X86Operand::CreateReg(RegNo, Start, End, /*GetAddress=*/true,
- OffsetOfLoc, SymName);
+ OffsetOfLoc, Identifier);
}
enum IntelOperatorKind {
More information about the llvm-commits
mailing list