summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/MachineInstr.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-10-20 22:39:36 +0000
committerChris Lattner <sabre@nondot.org>2006-10-20 22:39:36 +0000
commitfcfcb6cb502fd4562b57425a5802dc52f358c451 (patch)
tree861d786b4fab7e4e6c352746eb86b5ae865dee14 /include/llvm/CodeGen/MachineInstr.h
parent9dcbf0dedc47e667ed90a46844cbf8655eda0070 (diff)
downloadllvm-fcfcb6cb502fd4562b57425a5802dc52f358c451.tar.gz
llvm-fcfcb6cb502fd4562b57425a5802dc52f358c451.tar.bz2
llvm-fcfcb6cb502fd4562b57425a5802dc52f358c451.tar.xz
add isIdenticalTo method to machineinstr/operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/MachineInstr.h')
-rw-r--r--include/llvm/CodeGen/MachineInstr.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index b3955b6c19..ca38fe68f7 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -118,6 +118,10 @@ public:
assert(isImm() && "Wrong MachineOperand accessor");
return contents.immedVal;
}
+ MachineBasicBlock *getMBB() const {
+ assert(isMachineBasicBlock() && "Wrong MachineOperand accessor");
+ return contents.MBB;
+ }
MachineBasicBlock *getMachineBasicBlock() const {
assert(isMachineBasicBlock() && "Wrong MachineOperand accessor");
return contents.MBB;
@@ -203,6 +207,9 @@ public:
contents.immedVal = Idx;
}
+ /// isIdenticalTo - Return true if this operand is identical to the specified
+ /// operand.
+ bool isIdenticalTo(const MachineOperand &Other) const;
/// ChangeToImmediate - Replace this operand with a new immediate operand of
/// the specified value. If an operand is known to be an immediate already,
@@ -279,6 +286,18 @@ public:
return Operands[i];
}
+
+ /// isIdenticalTo - Return true if this instruction is identical to (same
+ /// opcode and same operands as) the specified instruction.
+ bool isIdenticalTo(const MachineInstr *Other) const {
+ if (Other->getOpcode() != getOpcode() ||
+ getNumOperands() != getNumOperands())
+ return false;
+ for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
+ if (!getOperand(i).isIdenticalTo(Other->getOperand(i)))
+ return false;
+ return true;
+ }
/// clone - Create a copy of 'this' instruction that is identical in
/// all ways except the the instruction has no parent, prev, or next.