#include "jit-ir.h"
Public Member Functions | |
jit_phi (jit_variable *adest, size_t npred) | |
virtual void | accept (jit_ir_walker &walker) |
void | add_incoming (jit_block *from, jit_value *value) |
jit_value * | argument (size_t i) const |
size_t | argument_count (void) const |
llvm::Value * | argument_llvm (size_t i) const |
jit_type * | argument_type (size_t i) const |
llvm::Type * | argument_type_llvm (size_t i) const |
const std::vector< jit_type * > & | argument_types (void) const |
const std::vector< jit_use > & | arguments (void) const |
virtual void | construct_ssa (void) |
jit_variable * | dest (void) const |
jit_use * | first_use (void) const |
jit_block * | first_use_block (void) |
bool | has_llvm (void) const |
size_t | id (void) const |
bool | in_worklist (void) const |
jit_block * | incoming (size_t i) const |
llvm::BasicBlock * | incoming_llvm (size_t i) const |
virtual bool | infer (void) |
jit_instruction * | last_use (void) const |
std::list< jit_instruction * >::iterator | location (void) const |
virtual bool | needs_release (void) const |
jit_block * | parent (void) const |
llvm::BasicBlock * | parent_llvm (void) const |
virtual void | pop_variable (void) |
virtual std::ostream & | print (std::ostream &os, size_t indent=0) const |
std::ostream & | print_argument (std::ostream &os, size_t i) const |
std::string | print_string (void) |
bool | prune (void) |
void | push_argument (jit_value *arg) |
virtual void | push_variable (void) |
void | remove (void) |
virtual void | replace_with (jit_value *m_value) |
void | resize_arguments (size_t acount, jit_value *adefault=nullptr) |
virtual std::ostream & | short_print (std::ostream &os) const |
void | stash_argument (size_t i, jit_value *arg) |
template<typename ... Args> | |
void | stash_argument (size_t i, jit_value *arg1, Args... aargs) |
void | stash_in_worklist (bool ain_worklist) |
void | stash_last_use (jit_instruction *alast_use) |
void | stash_llvm (llvm::Value *compiled) |
void | stash_parent (jit_block *aparent, std::list< jit_instruction * >::iterator alocation) |
void | stash_type (jit_type *new_type) |
llvm::PHINode * | to_llvm (void) const |
jit_type * | type (void) const |
llvm::Type * | type_llvm (void) const |
const std::string & | type_name (void) const |
size_t | use_count (void) const |
Static Public Member Functions | |
static void | reset_ids (void) |
Protected Member Functions | |
void | do_construct_ssa (size_t start, size_t end) |
std::ostream & | print_indent (std::ostream &os, size_t indent=0) const |
Protected Attributes | |
std::vector< jit_type * > | m_already_infered |
llvm::Value * | m_llvm_value |
Static Private Member Functions | |
static size_t | next_id (bool reset=false) |
Private Attributes | |
std::vector< jit_use > | m_arguments |
jit_variable * | m_dest |
size_t | m_id |
bool | m_in_worklist |
std::vector< jit_phi_incoming > | m_incoming |
jit_instruction * | m_last_use |
std::list< jit_instruction * >::iterator | m_location |
jit_block * | m_parent |
jit_type * | m_type |
size_t | m_use_count |
jit_use * | m_use_head |
jit_use * | m_use_tail |
|
inline |
|
virtual |
Implements octave::jit_value.
Definition at line 1004 of file jit-ir.h.
Referenced by octave::jit_infer::do_construct_ssa().
|
inlineinherited |
Definition at line 369 of file jit-ir.h.
Referenced by octave::jit_instruction::do_construct_ssa(), prune(), octave::jit_infer::release_dead_phi(), octave::jit_infer::release_temp(), octave::jit_magic_end::resolve_context(), octave::jit_infer::simplify_phi(), and octave::jit_convert_llvm::visit().
|
inlineinherited |
Definition at line 418 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::finish_phi(), infer(), octave::jit_call::infer(), prune(), octave::jit_infer::release_dead_phi(), octave::jit_infer::release_temp(), octave::jit_infer::simplify_phi(), and octave::jit_convert_llvm::visit().
|
inlineinherited |
Definition at line 374 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::finish_phi().
|
inlineinherited |
Definition at line 380 of file jit-ir.h.
Referenced by infer(), and octave::jit_call::infer().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 434 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::visit().
|
inlinevirtual |
Reimplemented from octave::jit_instruction.
|
inlineinherited |
Definition at line 907 of file jit-ir.h.
Referenced by octave::jit_infer::do_construct_ssa(), and octave::jit_infer::simplify_phi().
|
protectedinherited |
Definition at line 229 of file jit-ir.cc.
References octave::jit_instruction::argument(), octave::jit_variable::has_top(), octave::jit_instruction::stash_argument(), and octave::jit_variable::top().
|
inlineinherited |
Definition at line 145 of file jit-util.h.
|
inherited |
Definition at line 156 of file jit-ir.cc.
References octave::jit_internal_list< jit_value, jit_use >::first_use(), octave::jit_internal_node< LIST_T, NODE_T >::next(), octave::jit_use::user(), and octave::jit_use::user_parent().
Referenced by octave::jit_infer::release_temp().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 194 of file jit-ir.h.
Referenced by octave::jit_infer::push_worklist().
|
inline |
Definition at line 1011 of file jit-ir.h.
Referenced by infer(), prune(), octave::jit_infer::release_dead_phi(), and octave::jit_infer::simplify_phi().
|
inline |
Definition at line 1016 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::finish_phi().
|
virtual |
Reimplemented from octave::jit_instruction.
Definition at line 643 of file jit-ir.cc.
References octave::jit_block::alive(), octave::jit_instruction::argument_count(), octave::jit_instruction::argument_type(), octave::jit_block::branch_alive(), incoming(), octave::jit_type_join(), octave::jit_instruction::parent(), octave::jit_value::stash_type(), and octave::jit_value::type().
|
inlineinherited |
|
inlineinherited |
|
inlinevirtualinherited |
Reimplemented in octave::jit_call.
Definition at line 239 of file jit-ir.h.
Referenced by octave::jit_infer::release_dead_phi(), and octave::jit_infer::release_temp().
|
inlinestaticprivateinherited |
|
inlineinherited |
Definition at line 455 of file jit-ir.h.
Referenced by infer(), octave::jit_terminator::infer(), prune(), octave::jit_infer::simplify_phi(), octave::jit_use::user_parent(), and octave::jit_phi_incoming::user_parent().
|
inherited |
Definition at line 215 of file jit-ir.cc.
References octave::jit_instruction::m_parent, and octave::jit_block::to_llvm().
|
inlinevirtualinherited |
Reimplemented from octave::jit_instruction.
|
inlinevirtual |
Implements octave::jit_value.
|
inlineinherited |
|
inlineprotectedinherited |
Definition at line 266 of file jit-ir.h.
Referenced by octave::jit_block::print(), octave::jit_error_check::print(), and octave::jit_magic_end::print().
|
inlineinherited |
bool octave::jit_phi::prune | ( | void | ) |
Definition at line 602 of file jit-ir.cc.
References octave::jit_instruction::argument(), octave::jit_instruction::argument_count(), octave::jit_block::branch_alive(), incoming(), m_incoming, octave::jit_instruction::parent(), octave::jit_value::replace_with(), octave::jit_instruction::resize_arguments(), and octave::jit_instruction::stash_argument().
Referenced by octave::jit_infer::remove_dead().
|
inlineinherited |
|
inlinevirtualinherited |
Reimplemented from octave::jit_instruction.
|
inherited |
Definition at line 207 of file jit-ir.cc.
References octave::jit_instruction::m_location, octave::jit_instruction::m_parent, octave::jit_block::remove(), and octave::jit_instruction::resize_arguments().
Referenced by octave::jit_infer::do_construct_ssa(), octave::jit_block::merge(), octave::jit_infer::release_dead_phi(), and octave::jit_infer::remove_dead().
|
virtualinherited |
Reimplemented in octave::jit_block.
Definition at line 171 of file jit-ir.cc.
References octave::jit_internal_list< jit_value, jit_use >::first_use(), octave::jit_use::index(), octave::jit_instruction::stash_argument(), and octave::jit_use::user().
Referenced by prune(), octave::jit_infer::release_dead_phi(), and octave::jit_block::replace_with().
|
inlinestaticinherited |
Definition at line 364 of file jit-ir.h.
Referenced by octave::jit_convert::initialize().
|
inlineinherited |
Definition at line 423 of file jit-ir.h.
Referenced by octave::jit_magic_end::jit_magic_end(), prune(), and octave::jit_instruction::remove().
|
inlinevirtualinherited |
Reimplemented from octave::jit_instruction.
Definition at line 919 of file jit-ir.h.
References octave::jit_print().
|
inlineinherited |
Definition at line 399 of file jit-ir.h.
Referenced by octave::jit_magic_end::jit_magic_end(), octave::jit_instruction::do_construct_ssa(), octave::jit_block::maybe_split(), prune(), octave::jit_value::replace_with(), and octave::jit_infer::simplify_phi().
|
inlineinherited |
|
inlineinherited |
Definition at line 199 of file jit-ir.h.
Referenced by octave::jit_infer::push_worklist().
|
inlineinherited |
|
inlineinherited |
Definition at line 259 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::convert(), and octave::jit_convert_llvm::visit().
|
inlineinherited |
Definition at line 464 of file jit-ir.h.
Referenced by octave::jit_block::insert_after(), octave::jit_block::insert_before(), octave::jit_block::internal_append(), octave::jit_block::merge(), octave::jit_block::prepend(), and octave::jit_block::remove().
|
inlineinherited |
Definition at line 223 of file jit-ir.h.
Referenced by infer(), octave::jit_call::infer(), and octave::jit_magic_end::infer().
llvm::PHINode * octave::jit_phi::to_llvm | ( | void | ) | const |
Definition at line 667 of file jit-ir.cc.
References octave::jit_value::to_llvm().
Referenced by octave::jit_convert_llvm::finish_phi().
|
inlineinherited |
Definition at line 211 of file jit-ir.h.
Referenced by octave::jit_typeinfo::do_end(), infer(), octave::jit_call::infer(), octave::jit_magic_end::infer(), octave::jit_call::needs_release(), octave::jit_return::result_type(), octave::jit_instruction::short_print(), octave::jit_infer::simplify_phi(), octave::jit_factory::track_value(), and octave::jit_convert_llvm::visit().
|
inlineinherited |
Definition at line 213 of file jit-ir.h.
Referenced by octave::jit_convert_llvm::visit().
|
inlineinherited |
|
inlineinherited |
Definition at line 147 of file jit-util.h.
|
protectedinherited |
Definition at line 478 of file jit-ir.h.
Referenced by octave::jit_call::infer().
|
privateinherited |
|
privateinherited |
|
privateinherited |
Definition at line 493 of file jit-ir.h.
Referenced by octave::jit_instruction::short_print().
|
private |
|
privateinherited |
|
protectedinherited |
Definition at line 273 of file jit-ir.h.
Referenced by octave::jit_block::to_llvm().
|
privateinherited |
Definition at line 495 of file jit-ir.h.
Referenced by octave::jit_instruction::remove().
|
privateinherited |
Definition at line 494 of file jit-ir.h.
Referenced by octave::jit_instruction::parent_llvm(), and octave::jit_instruction::remove().
|
privateinherited |
Definition at line 153 of file jit-util.h.
|
privateinherited |
Definition at line 151 of file jit-util.h.
|
privateinherited |
Definition at line 152 of file jit-util.h.