Fill in some methods for the MCValue field of an MCOperand.
authorDaniel Dunbar <daniel@zuster.org>
Tue, 30 Jun 2009 23:37:44 +0000 (23:37 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 30 Jun 2009 23:37:44 +0000 (23:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74572 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCInst.h

index 310898587cc0a27299de4a84bdeb279631e534a6..8b638d4c743ee7f3fbdd1a06fc32657cea78613e 100644 (file)
@@ -31,7 +31,7 @@ class MCOperand {
     kRegister,                ///< Register operand.
     kImmediate,               ///< Immediate operand.
     kMBBLabel,                ///< Basic block label.
-    kMCValue
+    kMCValue                  ///< Relocatable immediate operand.
   };
   unsigned char Kind;
   
@@ -49,9 +49,11 @@ public:
   MCOperand() : Kind(kInvalid) {}
   MCOperand(const MCOperand &RHS) { *this = RHS; }
 
+  bool isValid() const { return Kind != kInvalid; }
   bool isReg() const { return Kind == kRegister; }
   bool isImm() const { return Kind == kImmediate; }
   bool isMBBLabel() const { return Kind == kMBBLabel; }
+  bool isMCValue() const { return Kind == kMCValue; }
   
   /// getReg - Returns the register number.
   unsigned getReg() const {
@@ -82,6 +84,15 @@ public:
     assert(isMBBLabel() && "Wrong accessor");
     return MBBLabel.BlockNo; 
   }
+
+  const MCValue &getMCValue() const {
+    assert(isMCValue() && "This is not an MCValue");
+    return MCValueVal;
+  }
+  void setMCValue(const MCValue &Val) {
+    assert(isMCValue() && "This is not an MCValue");
+    MCValueVal = Val;
+  }
   
   void MakeReg(unsigned Reg) {
     Kind = kRegister;
@@ -96,6 +107,10 @@ public:
     MBBLabel.FunctionNo = Fn;
     MBBLabel.BlockNo = MBB;
   }
+  void MakeMCValue(const MCValue &Val) {
+    Kind = kMCValue;
+    MCValueVal = Val;
+  }
 };
 
   
@@ -119,7 +134,6 @@ public:
   void addOperand(const MCOperand &Op) {
     Operands.push_back(Op);
   }
-  
 };