GCC Middle and Back End API Reference
tree-ssa-threadedge.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  jt_state
class  jt_simplifier
class  hybrid_jt_state
class  hybrid_jt_simplifier
class  jump_threader

Macros

#define SSA_NAME_VALUE(x)

Functions

void propagate_threaded_block_debug_into (basic_block, basic_block)
bool single_succ_to_potentially_threadable_block (basic_block)
bool cond_on_phi_p (basic_block, gcond **, gphi **)
bool phi_arg_from_cmp_p (gphi *, edge)
void set_ssa_name_value (tree, tree)

Variables

vec< treessa_name_values

Macro Definition Documentation

◆ SSA_NAME_VALUE

Function Documentation

◆ cond_on_phi_p()

bool cond_on_phi_p ( basic_block bb,
gcond ** cond_out,
gphi ** phi_out )
extern
Return true if BB contains only a conditional jump on a PHI
defined in it, compared against 0 or 1:

  <bb 5>:
  # t_1 = PHI <t_9(3), t_6(4)>
  if (t_1 != 0)

The conditional and the PHI are returned in *COND_OUT and
*PHI_OUT.   

References cond_on_phi_p(), dyn_cast(), gimple_bb(), gimple_cond_code(), gimple_cond_lhs(), gimple_cond_rhs(), integer_onep(), integer_zerop(), last_and_only_stmt(), NULL, safe_dyn_cast(), SSA_NAME_DEF_STMT, and TREE_CODE.

Referenced by cond_on_phi_p(), edge_forwards_cmp_to_conditional_jump_through_empty_bb_p(), and replicate_conds_over_phis().

◆ phi_arg_from_cmp_p()

bool phi_arg_from_cmp_p ( gphi * phi,
edge e )
extern
Return true if PHI's incoming value on edge E is a single-use
  comparison, possibly through a single-use conversion:

    <bb 3>:
    t_9 = a < b;
    goto <bb 5>;

    <bb 5>:
    # t_1 = PHI <t_9(3), ...>

References CONVERT_EXPR_CODE_P, dyn_cast(), gimple_assign_rhs1(), gimple_assign_rhs_code(), has_single_use(), PHI_ARG_DEF_FROM_EDGE, phi_arg_from_cmp_p(), SSA_NAME_DEF_STMT, tcc_comparison, TREE_CODE, and TREE_CODE_CLASS.

Referenced by edge_forwards_cmp_to_conditional_jump_through_empty_bb_p(), phi_arg_from_cmp_p(), and replicate_conds_over_phis().

◆ propagate_threaded_block_debug_into()

◆ set_ssa_name_value()

◆ single_succ_to_potentially_threadable_block()

bool single_succ_to_potentially_threadable_block ( basic_block bb)
extern
Return TRUE if BB has a single successor to a block with multiple
incoming and outgoing edges.   

References EDGE_COMPLEX, potentially_threadable_block(), single_succ(), single_succ_edge(), single_succ_p(), and single_succ_to_potentially_threadable_block().

Referenced by single_succ_to_potentially_threadable_block(), and jump_threader::thread_outgoing_edges().

Variable Documentation

◆ ssa_name_values

vec<tree> ssa_name_values
extern
Array to record value-handles per SSA_NAME.   

Referenced by jump_threader::jump_threader(), set_ssa_name_value(), and jump_threader::~jump_threader().