[ms-inline asm] Offset operator - the size should be based on the size of a
authorChad Rosier <mcrosier@apple.com>
Tue, 23 Oct 2012 23:42:06 +0000 (23:42 +0000)
committerChad Rosier <mcrosier@apple.com>
Tue, 23 Oct 2012 23:42:06 +0000 (23:42 +0000)
pointer, not the size of the variable.
Part of rdar://12470317

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166526 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp

index 1f4e8dae27132fcdbc2e5a0b44894aee9f593f39..b82bbdf913068e4d888e5167214ade8c9b8fc459 100644 (file)
@@ -774,6 +774,10 @@ X86Operand *X86AsmParser::ParseIntelMemOperand(unsigned SegReg, SMLoc Start) {
                               Tok.getString() == "OFFSET")) {
     OffsetOf = true;
     OffsetOfLoc = Parser.getTok().getLoc();
+
+    // Size is based on the size of a pointer, not the size of the variable.
+    assert (!Size && "Unexpected size!");
+    Size = is64BitMode() ? 64 : 32;
     Parser.Lex(); // Eat offset.
   }