Mercurial > hg > octave-lyh
diff src/interp-core/jit-ir.h @ 15191:ed4f4fb78586
Move type inference from jit_convert to jit_infer
* jit-ir.cc (jit_block_list::print, jit_block_list::print_dom): New function.
(operator<<): New overload.
* jit-ir.h (jit_block_list::print, jit_block_list::print_dom): New declaration.
(operator<<): New overload.
(jit_block::compute_idom): Change signature.
* pt-jit.cc (jit_convert::jit_convert): Remove type inference code.
(jit_convert::find_variable): vmap_t renamed to variable_map.
(jit_convert::append_users_term, jit_convert::construct_ssa,
jit_convert::do_construct_ssa, jit_convert::remove_dead,
jit_convert::place_releases, jit_convert::release_temp,
jit_convert::release_dead_phi, jit_convert::simplify_phi): Moved to jit_infer.
(jit_convert_llvm::jit_convert_llvm): Compute arguments.
(jit_info::jit_info): Update to use jit_infer.
(jit_info::initialize): Rename to jit_info::compile.
* pt-jit.h (jit_convert::append_users_term, jit_convert::construct_ssa,
jit_convert::do_construct_ssa, jit_convert::remove_dead,
jit_convert::place_releases, jit_convert::release_temp,
jit_convert::release_dead_phi, jit_convert::simplify_phi,
jit_convert::push_worklist, jit_convert::append_users): Moved to jit_infer.
(jit_convert::print_blocks, jit_convert::print_dom): Moved to jit_block_list.
(jit_convert_llvm::jit_convert_llvm): Do not take jit_convert as parameter.
(jit_convert_llvm::jit_convert_llvm): Remove arguments parameter.
(jit_convert_llvm::get_arguments): New function.
(jit_infer): New class.
(jit_info::initialize): Rename to jit_info::compile.
author | Max Brister <max@2bass.com> |
---|---|
date | Thu, 16 Aug 2012 18:51:30 -0500 |
parents | a7a56b436de2 |
children |
line wrap: on
line diff
--- a/src/interp-core/jit-ir.h +++ b/src/interp-core/jit-ir.h @@ -102,7 +102,6 @@ const value_list& constants (void) const { return mconstants; } - // this would be easier with variadic templates template <typename T> T *create (void) { @@ -127,6 +126,7 @@ JIT_CREATE (4) #undef JIT_CREATE +#undef DECL_ARG private: void track_value (jit_value *v); @@ -168,11 +168,17 @@ void insert_before (jit_block *loc, jit_block *ablock); + std::ostream& print (std::ostream& os, const std::string& header) const; + + std::ostream& print_dom (std::ostream& os) const; + void push_back (jit_block *b); private: std::list<jit_block *> mlist; }; +std::ostream& operator<<(std::ostream& os, const jit_block_list& blocks); + class jit_value : public jit_internal_list<jit_value, jit_use> { @@ -660,10 +666,10 @@ // See for idom computation algorithm // Cooper, Keith D.; Harvey, Timothy J; and Kennedy, Ken (2001). // "A Simple, Fast Dominance Algorithm" - void compute_idom (jit_block *entry_block) + void compute_idom (jit_block& entry_block) { bool changed; - entry_block->idom = entry_block; + entry_block.idom = &entry_block; do changed = update_idom (mvisit_count); while (changed);