#include "llvm/Method.h"
#include "llvm/iTerminators.h"
#include "llvm/iMemory.h"
+#include "llvm/iOther.h"
#include "llvm/ConstPoolVals.h"
#include "llvm/BasicBlock.h"
#include "llvm/CodeGen/MachineInstr.h"
// Distinguish special cases of some instructions such as Ret and Br
//
- if (opLabel == Instruction::Ret && ((ReturnInst*)I)->getReturnValue())
+ if (opLabel == Instruction::Ret && cast<ReturnInst>(I)->getReturnValue())
{
opLabel = RetValueOp; // ret(value) operation
}
- else if (opLabel == Instruction::Br && ! ((BranchInst*)I)->isUnconditional())
+ else if (opLabel ==Instruction::Br && !cast<BranchInst>(I)->isUnconditional())
{
opLabel = BrCondOp; // br(cond) operation
}
{
for (hash_map<const Instruction*, InstructionNode*>:: iterator I = begin();
I != end(); ++I)
- {
- InstructionNode* node = (*I).second;
- if (node)
- delete node;
- }
+ delete (*I).second;
}
void
// Check latter condition here just to simplify the next IF.
bool includeAddressOperand =
- (operand->isBasicBlock() || operand->isMethod())
+ (isa<BasicBlock>(operand) || isa<Method>(operand))
&& !instr->isTerminator();
- if (includeAddressOperand || operand->isInstruction() ||
- operand->isConstant() || operand->isMethodArgument() ||
- operand->isGlobal())
+ if (includeAddressOperand || isa<Instruction>(operand) ||
+ isa<ConstPoolVal>(operand) || isa<MethodArgument>(operand) ||
+ isa<GlobalVariable>(operand))
{
// This operand is a data value
// is used directly, i.e., made a child of the instruction node.
//
InstrTreeNode* opTreeNode;
- if (operand->isInstruction() && operand->use_size() == 1 &&
- ((Instruction*)operand)->getParent() == instr->getParent() &&
- ! instr->isPHINode() &&
- ! instr->getOpcode() == Instruction::Call)
+ if (isa<Instruction>(operand) && operand->use_size() == 1 &&
+ cast<Instruction>(operand)->getParent() == instr->getParent() &&
+ !isa<PHINode>(instr) &&
+ instr->getOpcode() != Instruction::Call)
{
// Recursively create a treeNode for it.
opTreeNode = buildTreeForInstruction((Instruction*)operand);
}
- else if (ConstPoolVal *CPV = operand->castConstant())
+ else if (ConstPoolVal *CPV = dyn_cast<ConstPoolVal>(operand))
{
// Create a leaf node for a constant
opTreeNode = new ConstantNode(CPV);