LLVM 20.0.0git
|
The tracker collects all the change objects and implements the main API for saving / reverting / accepting. More...
#include "llvm/SandboxIR/Tracker.h"
Public Types | |
enum class | TrackerState { Disabled , Record } |
Public Member Functions | |
Tracker (Context &Ctx) | |
~Tracker () | |
Context & | getContext () const |
void | track (std::unique_ptr< IRChangeBase > &&Change) |
Record Change and take ownership. | |
template<typename ChangeT , typename... ArgsT> | |
bool | emplaceIfTracking (ArgsT... Args) |
A convenience wrapper for track() that constructs and tracks the Change object if tracking is enabled. | |
bool | isTracking () const |
\Returns true if the tracker is recording changes. | |
TrackerState | getState () const |
\Returns the current state of the tracker. | |
void | save () |
Turns on IR tracking. | |
void | accept () |
Stops tracking and accept changes. | |
void | revert () |
Stops tracking and reverts to saved state. | |
void | dump (raw_ostream &OS) const |
LLVM_DUMP_METHOD void | dump () const |
Public Attributes | |
bool | InMiddleOfCreatingChange = false |
Helps catch bugs where we are creating new change objects while in the middle of creating other change objects. | |
Friends | |
raw_ostream & | operator<< (raw_ostream &OS, const Tracker &Tracker) |
The tracker collects all the change objects and implements the main API for saving / reverting / accepting.
|
strong |
|
inlineexplicit |
Tracker::~Tracker | ( | ) |
Definition at line 141 of file Tracker.cpp.
References assert().
void Tracker::accept | ( | ) |
Stops tracking and accept changes.
Definition at line 359 of file Tracker.cpp.
References assert(), Disabled, and Record.
Referenced by llvm::sandboxir::Context::accept().
void Tracker::dump | ( | ) | const |
Definition at line 375 of file Tracker.cpp.
References llvm::dbgs(), and dump().
Referenced by dump().
void Tracker::dump | ( | raw_ostream & | OS | ) | const |
Definition at line 368 of file Tracker.cpp.
References llvm::enumerate(), Idx, and OS.
|
inline |
A convenience wrapper for track()
that constructs and tracks the Change object if tracking is enabled.
\Returns true if tracking is enabled.
Definition at line 495 of file Tracker.h.
References isTracking(), and track().
Referenced by llvm::sandboxir::SwitchInst::addCase(), llvm::sandboxir::CatchSwitchInst::addHandler(), llvm::sandboxir::PHINode::addIncoming(), llvm::Instruction::cloneDebugInfoFrom(), llvm::sandboxir::ShuffleVectorInst::commute(), llvm::Instruction::dropOneDbgRecord(), llvm::Instruction::getAccessType(), llvm::Instruction::getModule(), llvm::sandboxir::Instruction::insertInto(), llvm::sandboxir::Context::registerValue(), llvm::sandboxir::SwitchInst::removeCase(), llvm::sandboxir::PHINode::removeIncomingValue(), llvm::Instruction::replaceSuccessorWith(), llvm::sandboxir::Use::set(), llvm::sandboxir::GlobalAlias::setAliasee(), llvm::sandboxir::AtomicRMWInst::setAlignment(), llvm::sandboxir::AtomicCmpXchgInst::setAlignment(), llvm::sandboxir::AllocaInst::setAlignment(), llvm::sandboxir::GlobalObject::setAlignment(), llvm::sandboxir::AllocaInst::setAllocatedType(), llvm::sandboxir::FuncletPadInst::setArgOperand(), llvm::sandboxir::CatchReturnInst::setCatchPad(), llvm::sandboxir::LandingPadInst::setCleanup(), llvm::sandboxir::CleanupReturnInst::setCleanupPad(), llvm::sandboxir::SwitchInst::setCondition(), llvm::sandboxir::GlobalVariable::setConstant(), llvm::sandboxir::CallBrInst::setDefaultDest(), llvm::sandboxir::SwitchInst::setDefaultDest(), llvm::sandboxir::GlobalVariable::setExternallyInitialized(), llvm::sandboxir::AtomicCmpXchgInst::setFailureOrdering(), llvm::sandboxir::Instruction::setFast(), llvm::sandboxir::Instruction::setFastMathFlags(), llvm::sandboxir::GlobalObject::setGlobalObjectSubClassData(), llvm::sandboxir::Instruction::setHasAllowReassoc(), llvm::sandboxir::Instruction::setHasAllowReciprocal(), llvm::sandboxir::Instruction::setHasApproxFunc(), llvm::sandboxir::Instruction::setHasNoInfs(), llvm::sandboxir::Instruction::setHasNoNaNs(), llvm::sandboxir::PHINode::setIncomingBlock(), llvm::sandboxir::PHINode::setIncomingValue(), llvm::sandboxir::GlobalVariable::setInitializer(), llvm::sandboxir::PossiblyDisjointInst::setIsDisjoint(), llvm::sandboxir::Instruction::setIsExact(), llvm::sandboxir::PossiblyNonNegInst::setNonNeg(), llvm::sandboxir::User::setOperand(), llvm::sandboxir::AtomicRMWInst::setOrdering(), llvm::sandboxir::FuncletPadInst::setParentPad(), llvm::sandboxir::CatchSwitchInst::setParentPad(), llvm::sandboxir::CmpInst::setPredicate(), llvm::sandboxir::GlobalIFunc::setResolver(), llvm::sandboxir::GlobalObject::setSection(), llvm::sandboxir::ShuffleVectorInst::setShuffleMask(), llvm::sandboxir::CatchReturnInst::setSuccessor(), llvm::sandboxir::SwitchInst::setSuccessor(), llvm::sandboxir::AtomicCmpXchgInst::setSuccessOrdering(), llvm::sandboxir::FenceInst::setSyncScopeID(), llvm::sandboxir::AtomicCmpXchgInst::setSyncScopeID(), llvm::sandboxir::GlobalValue::setUnnamedAddr(), llvm::sandboxir::CleanupReturnInst::setUnwindDest(), llvm::sandboxir::AllocaInst::setUsedWithInAlloca(), llvm::sandboxir::GlobalValue::setVisibility(), llvm::sandboxir::LoadInst::setVolatile(), llvm::sandboxir::StoreInst::setVolatile(), llvm::sandboxir::AtomicCmpXchgInst::setVolatile(), llvm::sandboxir::AtomicCmpXchgInst::setWeak(), llvm::sandboxir::Use::swap(), llvm::sandboxir::ICmpInst::swapOperands(), llvm::sandboxir::FCmpInst::swapOperands(), llvm::sandboxir::SelectInst::swapValues(), and llvm::Value::Value().
|
inline |
Definition at line 475 of file Tracker.h.
Referenced by llvm::sandboxir::EraseFromParent::revert().
|
inline |
|
inline |
\Returns true if the tracker is recording changes.
Definition at line 502 of file Tracker.h.
References Record.
Referenced by emplaceIfTracking(), llvm::sandboxir::Value::replaceAllUsesWith(), and track().
void Tracker::revert | ( | ) |
Stops tracking and reverts to saved state.
Definition at line 348 of file Tracker.cpp.
References assert(), Disabled, llvm::sandboxir::IRSnapshotChecker::expectNoDiff(), Record, and llvm::reverse().
Referenced by llvm::sandboxir::Context::revert().
void Tracker::save | ( | ) |
Turns on IR tracking.
Definition at line 341 of file Tracker.cpp.
References Record, and llvm::sandboxir::IRSnapshotChecker::save().
Referenced by llvm::sandboxir::Context::save().
|
inline |
Record Change
and take ownership.
This is the main function used to track Sandbox IR changes.
Definition at line 478 of file Tracker.h.
References assert(), InMiddleOfCreatingChange, isTracking(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Record.
Referenced by emplaceIfTracking(), and llvm::sandboxir::Value::replaceAllUsesWith().
|
friend |
bool llvm::sandboxir::Tracker::InMiddleOfCreatingChange = false |