[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