|
CACAO
|
Calculate the Loop Tree. More...
Public Member Functions | |
| LoopPassBase () | |
| virtual bool | run (JITData &JD) |
| Run the Pass. More... | |
| virtual PassUsage & | get_PassUsage (PassUsage &PU) const |
| Set the requirements for the pass. More... | |
Public Member Functions inherited from cacao::jit::compiler2::Pass | |
| Pass () | |
| void | set_PassManager (PassManager *PM) |
| 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... | |
Public Member Functions inherited from cacao::jit::compiler2::LoopTreeBase< _T > | |
| LoopTreeBase () | |
| bool | is_reducible () const |
| LoopType * | add_loop (NodeType *header, NodeType *exit) |
| void | add_top_loop (LoopType *loop) |
| loop_iterator | loop_begin () |
| loop_iterator | loop_end () |
| LoopType * | get_Loop (NodeType *BI) const |
| Get the inner most loop which contains BI or NULL if not contained in any loop. More... | |
| bool | is_loop_header (NodeType *BI) const |
| ConstLoopIteratorPair | get_Loops_from_header (NodeType *BI) const |
| bool | is_backedge (NodeType *src, NodeType *header) const |
| bool | is_inner_loop (LoopType *inner, LoopType *outer) const |
| Test if a loop is a strictly inner loop of another loop. More... | |
| int | loop_nest (LoopType *loop) const |
| TODO: cache? More... | |
| virtual | ~LoopTreeBase () |
Static Public Attributes | |
| static char | ID = 0 |
Private Types | |
| typedef _T | NodeType |
| typedef alloc::set< const NodeType * >::type | NodeListTy |
| typedef alloc::map< const NodeType *, NodeListTy >::type | NodeListMapTy |
| typedef alloc::vector< const NodeType * >::type | NodeMapTy |
| typedef alloc::map< const NodeType *, int >::type | IndexMapTy |
| typedef alloc::map< const NodeType *, const NodeType * > ::type | EdgeMapTy |
Private Member Functions | |
| NodeListTy & | succ (const NodeType *v, NodeListTy &list) |
| NodeType * | get_init_node (JITData &JD) |
Private Attributes | |
| NodeListMapTy | bucket |
| IndexMapTy | semi |
| NodeMapTy | vertex |
| int | n |
| EdgeMapTy | ancestor |
| EdgeMapTy | label |
Additional Inherited Members | |
Public Types inherited from cacao::jit::compiler2::LoopTreeBase< _T > | |
| typedef _T | NodeType |
| typedef LoopBase< NodeType > | LoopType |
| typedef LoopType::LoopSetTy | LoopSetTy |
| typedef LoopSetTy::iterator | loop_iterator |
| typedef LoopSetTy::const_iterator | const_loop_iterator |
| typedef std::pair < const_loop_iterator, const_loop_iterator > | ConstLoopIteratorPair |
| typedef alloc::vector < LoopType * >::type | LoopListTy |
| typedef LoopListTy::iterator | iterator |
| typedef LoopListTy::reverse_iterator | reverse_iterator |
Static Public Member Functions inherited from cacao::jit::compiler2::memory::ManagerMixin< LoopPassBase< _T > > | |
| static void * | operator new (std::size_t size) throw (std::bad_alloc) |
| normal new More... | |
| static void * | operator new (std::size_t size, void *ptr) throw () |
| placement new More... | |
| static void * | operator new (std::size_t size, const std::nothrow_t &nt) throw () |
| nothrow new More... | |
| static void | operator delete (void *pMemory) throw () |
| normal delete More... | |
| static void | operator delete (void *pMemory, void *ptr) throw () |
| placement delete More... | |
| static void | operator delete (void *pMemory, const std::nothrow_t &) throw () |
| nothrow delete More... | |
| static void * | operator new[] (std::size_t size) throw (std::bad_alloc) |
| normal new[] More... | |
| static void * | operator new[] (std::size_t size, void *ptr) throw () |
| placement new[] More... | |
| static void * | operator new[] (std::size_t size, const std::nothrow_t &nt) throw () |
| nothrow new[] More... | |
| static void | operator delete[] (void *pMemory) throw () |
| normal delete[] More... | |
| static void | operator delete[] (void *pMemory, void *ptr) throw () |
| placement delete[] More... | |
| static void | operator delete[] (void *pMemory, const std::nothrow_t &) throw () |
| nothrow delete[] More... | |
Protected Member Functions inherited from cacao::jit::compiler2::LoopTreeBase< _T > | |
| void | set_loop (NodeType *node, LoopType *loop) |
| void | insert_loop_header (NodeType *node, LoopType *loop) |
| iterator | begin () |
| iterator | end () |
| reverse_iterator | rbegin () |
| reverse_iterator | rend () |
Protected Attributes inherited from cacao::jit::compiler2::LoopTreeBase< _T > | |
| bool | reducible |
| LoopListTy | loops |
| LoopSetTy | top_loops |
| alloc::map< NodeType *, LoopType * >::type | loop_map |
| alloc::map< NodeType *, LoopSetTy >::type | loop_header_map |
Calculate the Loop Tree.
The algorithm used here is based on the method proposed in "Testing Flow Graph Reducibility" by Tarjan [9] with the modifications in "SSA-Based Reduction of Operator Strengh" by Vick [10]. See also Click's Phd Thesis, Chapter 6 [2].
Definition at line 53 of file LoopPassBase.hpp.
|
private |
Definition at line 60 of file LoopPassBase.hpp.
|
private |
Definition at line 59 of file LoopPassBase.hpp.
|
private |
Definition at line 57 of file LoopPassBase.hpp.
|
private |
Definition at line 56 of file LoopPassBase.hpp.
|
private |
Definition at line 58 of file LoopPassBase.hpp.
|
private |
Definition at line 55 of file LoopPassBase.hpp.
|
inline |
Definition at line 86 of file LoopPassBase.hpp.
|
private |
Definition at line 40 of file LoopPass.cpp.
Set the requirements for the pass.
Reimplemented from cacao::jit::compiler2::Pass.
Definition at line 34 of file LoopPass.cpp.
|
inlinevirtual |
Run the Pass.
This method implements the compiler pass.
Implements cacao::jit::compiler2::Pass.
Definition at line 109 of file LoopPassBase.hpp.
|
private |
|
private |
Definition at line 71 of file LoopPassBase.hpp.
|
private |
Definition at line 66 of file LoopPassBase.hpp.
|
static |
Definition at line 85 of file LoopPassBase.hpp.
|
private |
Definition at line 72 of file LoopPassBase.hpp.
|
private |
Definition at line 69 of file LoopPassBase.hpp.
|
private |
Definition at line 67 of file LoopPassBase.hpp.
|
private |
Definition at line 68 of file LoopPassBase.hpp.
1.8.5