summaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCParser
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-10-12 22:15:11 +0000
committerChad Rosier <mcrosier@apple.com>2012-10-12 22:15:11 +0000
commit0d218994f1ccaacd7c31792af2331ae82bc79c03 (patch)
tree089eee35da1a05eefe91d43cad839e29fc2e1c2b /include/llvm/MC/MCParser
parentf3ad95a80b1f790f9acd8a54236930661147c4ec (diff)
downloadllvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.tar.gz
llvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.tar.bz2
llvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.tar.xz
[ms-inline asm] Add a few data members and member functions to the
MCParsedAsmOperand class in support of ms-style inline assembly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165830 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCParser')
-rw-r--r--include/llvm/MC/MCParser/MCParsedAsmOperand.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/llvm/MC/MCParser/MCParsedAsmOperand.h b/include/llvm/MC/MCParser/MCParsedAsmOperand.h
index 0ce32d617e..280145bfbc 100644
--- a/include/llvm/MC/MCParser/MCParsedAsmOperand.h
+++ b/include/llvm/MC/MCParser/MCParsedAsmOperand.h
@@ -19,10 +19,34 @@ class raw_ostream;
/// base class is used by target-independent clients and is the interface
/// between parsing an asm instruction and recognizing it.
class MCParsedAsmOperand {
+ /// MCOperandNum - The corresponding MCInst operand number. Only valid when
+ /// parsing MS-style inline assembly.
+ unsigned MCOperandNum;
+
+ /// Constraint - The constraint on this operand. Only valid when parsing
+ /// MS-style inline assembly.
+ std::string Constraint;
+
public:
MCParsedAsmOperand() {}
virtual ~MCParsedAsmOperand() {}
+ void setConstraint(StringRef C) { Constraint = C.str(); }
+ StringRef getConstraint() { return Constraint; }
+
+ void setMCOperandNum (unsigned OpNum) { MCOperandNum = OpNum; }
+ unsigned getMCOperandNum() { return MCOperandNum; }
+
+ unsigned getNameLen() {
+ assert (getStartLoc().isValid() && "Invalid StartLoc!");
+ assert (getEndLoc().isValid() && "Invalid EndLoc!");
+ return getEndLoc().getPointer() - getStartLoc().getPointer();
+ }
+
+ StringRef getName() {
+ return StringRef(getStartLoc().getPointer(), getNameLen());
+ }
+
/// isToken - Is this a token operand?
virtual bool isToken() const = 0;
/// isImm - Is this an immediate operand?