[llvm-commits] [llvm] r93532 - /llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp

Chris Lattner sabre at nondot.org
Fri Jan 15 11:06:59 PST 2010


Author: lattner
Date: Fri Jan 15 13:06:59 2010
New Revision: 93532

URL: http://llvm.org/viewvc/llvm-project?rev=93532&view=rev
Log:
give X86Operand a ctor and start passing SMLoc's into it.

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=93532&r1=93531&r2=93532&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Fri Jan 15 13:06:59 2010
@@ -74,7 +74,7 @@
 /// X86Operand - Instances of this class represent a parsed X86 machine
 /// instruction.
 struct X86Operand : public MCParsedAsmOperand {
-  enum {
+  enum KindTy {
     Token,
     Register,
     Immediate,
@@ -106,6 +106,14 @@
     } Mem;
   };
 
+  X86Operand(KindTy K, SMLoc Start = SMLoc(), SMLoc End = SMLoc())
+    : Kind(K), StartLoc(Start), EndLoc(End) {}
+  
+  /// getStartLoc - Get the location of the first token of this operand.
+  SMLoc getStartLoc() const { return StartLoc; }
+  /// getEndLoc - Get the location of the last token of this operand.
+  SMLoc getEndLoc() const { return EndLoc; }
+
   StringRef getToken() const {
     assert(Kind == Token && "Invalid access!");
     return StringRef(Tok.Data, Tok.Length);
@@ -194,25 +202,20 @@
   }
 
   static X86Operand *CreateToken(StringRef Str) {
-    X86Operand *Res = new X86Operand();
-    Res->Kind = Token;
+    X86Operand *Res = new X86Operand(Token);
     Res->Tok.Data = Str.data();
     Res->Tok.Length = Str.size();
     return Res;
   }
 
   static X86Operand *CreateReg(unsigned RegNo, SMLoc StartLoc, SMLoc EndLoc) {
-    X86Operand *Res = new X86Operand();
-    Res->Kind = Register;
+    X86Operand *Res = new X86Operand(Register, StartLoc, EndLoc);
     Res->Reg.RegNo = RegNo;
-    Res->StartLoc = StartLoc;
-    Res->EndLoc = EndLoc;
     return Res;
   }
 
   static X86Operand *CreateImm(const MCExpr *Val) {
-    X86Operand *Res = new X86Operand();
-    Res->Kind = Immediate;
+    X86Operand *Res = new X86Operand(Immediate);
     Res->Imm.Val = Val;
     return Res;
   }
@@ -226,8 +229,7 @@
     // The scale should always be one of {1,2,4,8}.
     assert(((Scale == 1 || Scale == 2 || Scale == 4 || Scale == 8)) &&
            "Invalid scale!");
-    X86Operand *Res = new X86Operand();
-    Res->Kind = Memory;
+    X86Operand *Res = new X86Operand(Memory);
     Res->Mem.SegReg   = SegReg;
     Res->Mem.Disp     = Disp;
     Res->Mem.BaseReg  = BaseReg;





More information about the llvm-commits mailing list