/* FIXME: Stupid SgAsmInstruction interface necessitates a "switch". [RPM 2011-11-11] */ size_t Partitioner::count_floating_point(const InstructionMap &insns) { size_t retval = 0; for (InstructionMap::const_iterator ii=insns.begin(); ii!=insns.end(); ++ii) { SgAsmInstruction *insn = ii->second->node; switch (insn->variantT()) { case V_SgAsmx86Instruction: if (x86InstructionIsFloatingPoint(isSgAsmx86Instruction(insn))) ++retval; break; default: // to shut up compiler warnings break; } } return retval; }
/* FIXME: Stupid SgAsmInstruction interface necessitates a "switch". [RPM 2011-11-11] */ size_t Partitioner::count_kinds(const InstructionMap &insns) { std::set<int> kinds; for (InstructionMap::const_iterator ii=insns.begin(); ii!=insns.end(); ++ii) { SgAsmInstruction *insn = ii->second->node; int kind = -1; switch (insn->variantT()) { case V_SgAsmx86Instruction: kind = isSgAsmx86Instruction(insn) ->get_kind(); break; case V_SgAsmPowerpcInstruction: kind = isSgAsmPowerpcInstruction(insn)->get_kind(); break; case V_SgAsmArmInstruction: kind = isSgAsmArmInstruction(insn) ->get_kind(); break; default: break; // to shut up compiler warnings } if (-1!=kind) kinds.insert(kind); } return kinds.size(); }