diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-10-12 22:15:11 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-10-12 22:15:11 +0000 |
commit | 0d218994f1ccaacd7c31792af2331ae82bc79c03 (patch) | |
tree | 089eee35da1a05eefe91d43cad839e29fc2e1c2b /include/llvm/MC/MCParser | |
parent | f3ad95a80b1f790f9acd8a54236930661147c4ec (diff) | |
download | external_llvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.zip external_llvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.tar.gz external_llvm-0d218994f1ccaacd7c31792af2331ae82bc79c03.tar.bz2 |
[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.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/llvm/MC/MCParser/MCParsedAsmOperand.h b/include/llvm/MC/MCParser/MCParsedAsmOperand.h index 0ce32d6..280145b 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? |