OSDN Git Service

[X86][Asm] Allow negative immediate to appear before bracketed expression
authorCoby Tayree <coby.tayree@intel.com>
Wed, 9 Aug 2017 21:49:17 +0000 (21:49 +0000)
committerCoby Tayree <coby.tayree@intel.com>
Wed, 9 Aug 2017 21:49:17 +0000 (21:49 +0000)
Currently, only non-negative immediate is allowed prior to a brac expression (memory reference).
MASM / GAS does not have any problem cope with the left side of the real line, so we should be able to as well.

Differntial Revision: https://reviews.llvm.org/D36229

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

include/llvm/MC/MCParser/MCTargetAsmParser.h
lib/Target/X86/AsmParser/X86AsmParser.cpp

index b8d3180..4e2303f 100644 (file)
@@ -66,11 +66,11 @@ struct AsmRewrite {
   AsmRewriteKind Kind;
   SMLoc Loc;
   unsigned Len;
-  unsigned Val;
+  int64_t Val;
   StringRef Label;
 
 public:
-  AsmRewrite(AsmRewriteKind kind, SMLoc loc, unsigned len = 0, unsigned val = 0)
+  AsmRewrite(AsmRewriteKind kind, SMLoc loc, unsigned len = 0, int64_t val = 0)
     : Kind(kind), Loc(loc), Len(len), Val(val) {}
   AsmRewrite(AsmRewriteKind kind, SMLoc loc, unsigned len, StringRef label)
     : Kind(kind), Loc(loc), Len(len), Val(0), Label(label) {}
index dd6727a..fd083b0 100644 (file)
@@ -1962,11 +1962,6 @@ std::unique_ptr<X86Operand> X86AsmParser::ParseIntelOperand() {
     return X86Operand::CreateImm(ImmExpr, Start, End);
   }
 
-  // Only positive immediates are valid.
-  if (Imm < 0)
-    return ErrorOperand(Start, "expected a positive immediate displacement "
-                               "before bracketed expr.");
-
   return ParseIntelBracExpression(/*SegReg=*/0, Start, Imm, isSymbol, Size);
 }