CACAO
|
GlobalValueNumberingPass. More...
Public Member Functions | |
GlobalValueNumberingPass () | |
virtual bool | run (JITData &JD) |
Run the Pass. More... | |
virtual PassUsage & | get_PassUsage (PassUsage &PU) const |
Set the requirements for the pass. More... | |
virtual bool | is_enabled () const |
Allows concrete passes to enable/disable themselves the way they like. More... | |
![]() | |
Pass () | |
void | set_PassRunner (PassRunner *pr) |
template<class _PassClass > | |
_PassClass * | get_Pass () const |
Get the result of a previous compiler pass. More... | |
template<class _PassClass > | |
_PassClass * | get_Pass_if_available () const |
Get the result of a previous compiler pass. More... | |
virtual void | initialize () |
Initialize the Pass. More... | |
virtual void | finalize () |
Finalize the Pass. More... | |
virtual bool | verify () const |
Verify the Result. More... | |
virtual | ~Pass () |
Destructor. More... | |
Static Public Attributes | |
static Option< bool > | enabled |
Private Types | |
typedef alloc::unordered_set < Instruction * >::type | BlockTy |
typedef std::list< BlockTy * > | PartitionTy |
typedef std::pair< BlockTy *, int > | WorkListPairTy |
typedef std::list < WorkListPairTy * > | WorkListTy |
typedef std::unordered_map < BlockTy *, std::vector< bool > * > | InWorkListTy |
typedef std::unordered_map < Instruction *, BlockTy * > | Inst2BlockMapTy |
typedef std::list< Instruction * > | InstructionListTy |
typedef std::vector < InstructionListTy * > | OperandIndex2UsersTy |
typedef std::unordered_map < Instruction *, OperandIndex2UsersTy * > | OperandInverseMapTy |
typedef std::unordered_map < Instruction::InstID, BlockTy *, std::hash< int > > | OpcodeBlockMapTy |
these types are needed for the creation of the inital blocks More... | |
typedef std::unordered_map < int32_t, BlockTy * > | IntBlockMapTy |
typedef std::unordered_map < int64_t, BlockTy * > | LongBlockMapTy |
typedef std::unordered_map < float, BlockTy * > | FloatBlockMapTy |
typedef std::unordered_map < double, BlockTy * > | DoubleBlockMapTy |
typedef std::unordered_map < BeginInst *, BlockTy * > | BBBlockMapTy |
typedef alloc::unordered_set < Instruction * >::type | TouchedInstListTy |
typedef std::unordered_map < BlockTy *, TouchedInstListTy * > | Block2TouchedInstListMapTy |
Static Private Member Functions | |
static int | arity (BlockTy *block) |
static int | compute_max_arity (Method::const_iterator begin, Method::const_iterator end) |
Additional Inherited Members | |
![]() | |
template<class T > | |
static PassInfo::IDTy | ID () |
This template will return a unique ID for each type that it is called with. More... | |
This pass finds and removes redundant computations based on the high-level intermediate representation of the compiler2, i.e., it removes redundant nodes. It therefore uses the global value numbering algorithm in [8].
Definition at line 47 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 65 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 68 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 49 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 64 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 63 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 54 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 55 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 61 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 53 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 62 of file GlobalValueNumberingPass.hpp.
|
private |
these types are needed for the creation of the inital blocks
Definition at line 60 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 56 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 57 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 50 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 67 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 51 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 52 of file GlobalValueNumberingPass.hpp.
|
inline |
Definition at line 123 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 170 of file GlobalValueNumberingPass.cpp.
Definition at line 260 of file GlobalValueNumberingPass.cpp.
|
staticprivate |
Definition at line 175 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 401 of file GlobalValueNumberingPass.cpp.
|
staticprivate |
Definition at line 181 of file GlobalValueNumberingPass.cpp.
|
private |
creates and returns a new block and does some setup work needed for the further execution of the partitioning algorithm
Definition at line 163 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 312 of file GlobalValueNumberingPass.cpp.
Definition at line 322 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 284 of file GlobalValueNumberingPass.cpp.
|
inlineprivate |
Definition at line 111 of file GlobalValueNumberingPass.hpp.
Set the requirements for the pass.
Reimplemented from cacao::jit::compiler2::Pass.
Definition at line 484 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 279 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 213 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 241 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 226 of file GlobalValueNumberingPass.cpp.
|
private |
|
private |
Definition at line 193 of file GlobalValueNumberingPass.cpp.
|
inlinevirtual |
Allows concrete passes to enable/disable themselves the way they like.
Reimplemented from cacao::jit::compiler2::Pass.
Definition at line 127 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 255 of file GlobalValueNumberingPass.cpp.
Definition at line 357 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 367 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 348 of file GlobalValueNumberingPass.cpp.
|
virtual |
Run the Pass.
This method implements the compiler pass.
Implements cacao::jit::compiler2::Pass.
Definition at line 412 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 271 of file GlobalValueNumberingPass.cpp.
Definition at line 250 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 288 of file GlobalValueNumberingPass.cpp.
|
private |
Definition at line 73 of file GlobalValueNumberingPass.hpp.
|
static |
Definition at line 122 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 72 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 74 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 70 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 76 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 71 of file GlobalValueNumberingPass.hpp.
|
private |
Definition at line 75 of file GlobalValueNumberingPass.hpp.