diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-15 19:06:59 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-15 19:06:59 +0000 |
commit | 1f19f0f31dace5d145fecbe1f0f3fea4fb9ae813 (patch) | |
tree | 4d94fe9d3101b7dd78cc65fe0e1485cd8f2efd3d /lib | |
parent | 3a32865d58f015e7058444eab7085195c34da95a (diff) | |
download | external_llvm-1f19f0f31dace5d145fecbe1f0f3fea4fb9ae813.zip external_llvm-1f19f0f31dace5d145fecbe1f0f3fea4fb9ae813.tar.gz external_llvm-1f19f0f31dace5d145fecbe1f0f3fea4fb9ae813.tar.bz2 |
give X86Operand a ctor and start passing SMLoc's into it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93532 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index dcf4f83..8ccfc8f 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -74,7 +74,7 @@ namespace { /// 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 @@ struct X86Operand : public MCParsedAsmOperand { } 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 @@ struct X86Operand : public MCParsedAsmOperand { } 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 @@ struct X86Operand : public MCParsedAsmOperand { // 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; |