|
LLVM 24.0.0git
|
Rematerializer listener with the ability to re-create deleted registers and rollback rematerializations. More...
#include "llvm/CodeGen/Rematerializer.h"
Public Member Functions | |
| Rollbacker ()=default | |
| void | rollback (Rematerializer &Remater) |
| Re-creates all deleted registers and rolls back all rematerializations that were recorded. | |
| void | rematerializerNoteRegCreated (const Rematerializer &Remater, RegisterIdx RegIdx) override |
Called just after register NewRegIdx is created (following a rematerialization). | |
| void | rematerializerNoteRegWillBeDeleted (const Rematerializer &Remater, RegisterIdx RegIdx) override |
Called just before register RegIdx is deleted from the MIR. | |
| void | rematerializerNoteMIWillBeDeleted (const Rematerializer &Remater, MachineInstr &MI) override |
Called just before unrematerializable instruction MI is deleted from the MIR because it has become a dead definition. | |
| Public Member Functions inherited from llvm::Rematerializer::Listener | |
| virtual | ~Listener ()=default |
Additional Inherited Members | |
| Public Types inherited from llvm::Rematerializer::Listener | |
| using | RegisterIdx = Rematerializer::RegisterIdx |
Rematerializer listener with the ability to re-create deleted registers and rollback rematerializations.
Starts recording register deletions and rematerializations as soon as it is attached to the rematerializer.
Definition at line 550 of file Rematerializer.h.
|
default |
|
overridevirtual |
Called just before unrematerializable instruction MI is deleted from the MIR because it has become a dead definition.
Reimplemented from llvm::Rematerializer::Listener.
Definition at line 1010 of file Rematerializer.cpp.
References llvm::MachineBasicBlock::end(), and MI.
Referenced by Rollbacker().
|
overridevirtual |
Called just after register NewRegIdx is created (following a rematerialization).
At this point the rematerialization exists in the Remater state and the MIR but does not yet have any user.
Reimplemented from llvm::Rematerializer::Listener.
Definition at line 973 of file Rematerializer.cpp.
References assert(), llvm::Rematerializer::getOriginOf(), and llvm::Rematerializer::isRematerializedRegister().
Referenced by Rollbacker().
|
overridevirtual |
Called just before register RegIdx is deleted from the MIR.
At this point the register still exists in the MIR but no longer has any user.
Reimplemented from llvm::Rematerializer::Listener.
Definition at line 981 of file Rematerializer.cpp.
References DefMI, llvm::Rematerializer::Reg::DefMI, llvm::MachineBasicBlock::end(), llvm::Rematerializer::getReg(), and llvm::Rematerializer::isRematerializedRegister().
Referenced by Rollbacker().
| void Rollbacker::rollback | ( | Rematerializer & | Remater | ) |
Re-creates all deleted registers and rolls back all rematerializations that were recorded.
Definition at line 1024 of file Rematerializer.cpp.
References assert(), llvm::cast(), llvm::dyn_cast(), llvm::Rematerializer::getReg(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::Rematerializer::Reg::isAlive(), llvm::Rematerializer::isPermanentlyDead(), llvm_unreachable, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup_or(), MBB, MI, llvm::Rematerializer::recreateReg(), llvm::reverse(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::size(), and llvm::Rematerializer::transferAllUsers().
Referenced by Rollbacker().