- /// killed_iterator - Iterate over registers killed by a machine instruction
- ///
- typedef std::vector<unsigned>::iterator killed_iterator;
-
- std::vector<unsigned> &getKillsVector(MachineInstr *MI) {
- std::map<MachineInstr*, std::vector<unsigned> >::iterator I =
- RegistersKilled.find(MI);
- return I != RegistersKilled.end() ? I->second : Dummy;
- }
- std::vector<unsigned> &getDeadDefsVector(MachineInstr *MI) {
- std::map<MachineInstr*, std::vector<unsigned> >::iterator I =
- RegistersDead.find(MI);
- return I != RegistersDead.end() ? I->second : Dummy;
- }
-
-
- /// killed_begin/end - Get access to the range of registers killed by a
- /// machine instruction.
- killed_iterator killed_begin(MachineInstr *MI) {
- return getKillsVector(MI).begin();
- }
- killed_iterator killed_end(MachineInstr *MI) {
- return getKillsVector(MI).end();
- }
- std::pair<killed_iterator, killed_iterator>
- killed_range(MachineInstr *MI) {
- std::vector<unsigned> &V = getKillsVector(MI);
- return std::make_pair(V.begin(), V.end());
- }
-
- /// KillsRegister - Return true if the specified instruction kills the
- /// specified register.
- bool KillsRegister(MachineInstr *MI, unsigned Reg) const;
-
- killed_iterator dead_begin(MachineInstr *MI) {
- return getDeadDefsVector(MI).begin();
- }
- killed_iterator dead_end(MachineInstr *MI) {
- return getDeadDefsVector(MI).end();
- }
- std::pair<killed_iterator, killed_iterator>
- dead_range(MachineInstr *MI) {
- std::vector<unsigned> &V = getDeadDefsVector(MI);
- return std::make_pair(V.begin(), V.end());
- }
-