#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "rtl.h"#include "hard-reg-set.h"#include "obstack.h"#include "basic-block.h"#include "cfgloop.h"#include "expr.h"#include "output.h"#include "function.h"#include "flags.h"#include "df.h"

Go to the source code of this file.
| static int best_gain_for_invariant | ( | struct invariant ** | best, | |
| unsigned * | regs_needed, | |||
| unsigned | new_regs, | |||
| unsigned | regs_used, | |||
| unsigned | n_inv_uses | |||
| ) | [static] |
Definition at line 669 of file loop-invariant.c.
References gain_for_invariant(), invariants, invariant::invno, invariant::move, VARRAY_ACTIVE_SIZE, and VARRAY_GENERIC_PTR_NOGC.
Referenced by find_invariants_to_move().
Definition at line 372 of file loop-invariant.c.
References bitmap_set_bit(), BLOCK_FOR_INSN, CDI_DOMINATORS, defs, DF_INSN_USES, DF_REF_BB, DF_REF_CHAIN, DF_REF_DATA, dominated_by_p(), def::invno, df_link::next, and df_link::ref.
Referenced by find_invariant_insn().
Definition at line 128 of file loop-invariant.c.
References CONST, GET_CODE, GET_RTX_FORMAT, GET_RTX_LENGTH, i, MEM, MEM_READONLY_P, MEM_VOLATILE_P, PC, REG, XEXP, XVECEXP, and XVECLEN.
Referenced by find_invariant_insn(), and VEC().
| static void compute_always_reached | ( | struct loop * | loop, | |
| basic_block * | body, | |||
| bitmap | may_exit, | |||
| bitmap | always_reached | |||
| ) | [static] |
Definition at line 199 of file loop-invariant.c.
References bitmap_bit_p(), bitmap_set_bit(), CDI_DOMINATORS, dominated_by_p(), i, loop::latch, and loop::num_nodes.
Referenced by find_invariants().
| static void create_new_invariant | ( | struct def * | def, | |
| rtx | insn, | |||
| bitmap | depends_on, | |||
| bool | always_executed | |||
| ) | [static] |
Definition at line 313 of file loop-invariant.c.
References invariant::always_executed, invariant::cost, invariant::def, invariant::depends_on, dump_bitmap, dump_file, fprintf(), invariant::insn, INSN_UID, invariants, invariant::invno, def::invno, invariant::move, invariant::processed, rtx_cost(), SET, SET_SRC, single_set, invariant::stamp, VARRAY_ACTIVE_SIZE, VARRAY_PUSH_GENERIC_PTR_NOGC, and xmalloc().
Referenced by find_invariant_insn().
Definition at line 296 of file loop-invariant.c.
References BITMAP_ALLOC, BITMAP_FREE, bitmap_set_bit(), blocks, df_analyze_subcfg(), DF_EQUIV_NOTES, DF_HARD_REGS, DF_UD_CHAIN, i, index(), NULL, and loop::num_nodes.
Referenced by find_invariants().
| static void find_exits | ( | struct loop * | loop, | |
| basic_block * | body, | |||
| bitmap | may_exit, | |||
| bitmap | has_exit | |||
| ) | [static] |
Definition at line 219 of file loop-invariant.c.
References loop::aux, bitmap_set_bit(), CALL_P, CONST_OR_PURE_CALL_P, edge::dest, find_common_loop(), flow_bb_inside_loop_p(), flow_loop_nested_p(), FOR_BB_INSNS, FOR_EACH_EDGE, i, insn, LOOP_DATA, loop::num_nodes, and xcalloc().
Referenced by find_invariants().
| static void find_invariant_insn | ( | rtx | insn, | |
| bool | always_reached, | |||
| bool | always_executed, | |||
| struct df * | df | |||
| ) | [static] |
Definition at line 411 of file loop-invariant.c.
References BITMAP_ALLOC, BITMAP_FREE, check_dependencies(), check_maybe_invariant(), create_new_invariant(), dest, df_find_def(), DF_REF_DATA, find_reg_note(), flag_non_call_exceptions, GET_CODE, HARD_REGISTER_P, may_assign_reg_p(), may_trap_p(), NULL, NULL_RTX, PATTERN, REG, REG_LIBCALL, REG_NO_CONFLICT, REG_RETVAL, SET_DEST, SET_SRC, single_set, and xcalloc().
Referenced by find_invariants_insn().
Definition at line 558 of file loop-invariant.c.
References BITMAP_ALLOC, BITMAP_FREE, compute_always_reached(), find_defs(), find_exits(), find_invariants_body(), free(), get_loop_body_in_dom_order(), and NULL.
Referenced by move_single_loop_invariants().
| static void find_invariants_bb | ( | basic_block | bb, | |
| bool | always_reached, | |||
| bool | always_executed, | |||
| struct df * | df | |||
| ) | [static] |
Definition at line 517 of file loop-invariant.c.
References CALL_P, CONST_OR_PURE_CALL_P, find_invariants_insn(), FOR_BB_INSNS, ref::insn, and INSN_P.
Referenced by find_invariants_body().
| static void find_invariants_body | ( | struct loop * | loop, | |
| basic_block * | body, | |||
| bitmap | always_reached, | |||
| bitmap | always_executed, | |||
| struct df * | df | |||
| ) | [static] |
Definition at line 542 of file loop-invariant.c.
References bitmap_bit_p(), find_invariants_bb(), i, and loop::num_nodes.
Referenced by find_invariants().
| static void find_invariants_insn | ( | rtx | insn, | |
| bool | always_reached, | |||
| bool | always_executed, | |||
| struct df * | df | |||
| ) | [static] |
Definition at line 504 of file loop-invariant.c.
References find_invariant_insn(), and record_uses().
Referenced by find_invariants_bb().
Definition at line 720 of file loop-invariant.c.
References best_gain_for_invariant(), invariant::def, DF_REGNO_FIRST_DEF, DF_REGNO_LAST_USE, i, invariants, invariant::invno, df::n_regs, def::n_uses, NULL, regs_used, set_move_mark(), VARRAY_ACTIVE_SIZE, and VARRAY_GENERIC_PTR_NOGC.
Referenced by move_single_loop_invariants().
Definition at line 843 of file loop-invariant.c.
References BITMAP_FREE, df::defs, invariant::depends_on, DF_REF_DATA, free(), free_use_list(), i, invariants, df::n_defs, NULL, def::uses, VARRAY_ACTIVE_SIZE, VARRAY_GENERIC_PTR_NOGC, and VARRAY_POP_ALL.
Referenced by move_single_loop_invariants().
Definition at line 889 of file loop-invariant.c.
References loop::aux, free(), LOOP_DATA, and NULL.
Referenced by move_loop_invariants(), tree_ssa_iv_optimize_finalize(), and tree_ssa_iv_optimize_loop().
Definition at line 583 of file loop-invariant.c.
References free(), use::next, and next.
Referenced by free_inv_motion_data().
| static int gain_for_invariant | ( | struct invariant * | inv, | |
| unsigned * | regs_needed, | |||
| unsigned | new_regs, | |||
| unsigned | regs_used, | |||
| unsigned | n_inv_uses | |||
| ) | [static] |
Definition at line 647 of file loop-invariant.c.
References actual_stamp, get_inv_cost(), global_cost_for_size(), and size_cost.
Referenced by best_gain_for_invariant().
| static void get_inv_cost | ( | struct invariant * | inv, | |
| int * | comp_cost, | |||
| unsigned * | regs_needed | |||
| ) | [static] |
Definition at line 598 of file loop-invariant.c.
References actual_stamp, invariant::always_executed, invariant::cost, invariant::def, invariant::depends_on, EXECUTE_IF_SET_IN_BITMAP, invariants, invariant::move, use::next, invariant::stamp, def::uses, and VARRAY_GENERIC_PTR_NOGC.
Referenced by gain_for_invariant(), and get_inv_cost().
Definition at line 831 of file loop-invariant.c.
References actual_stamp, invariants, and VARRAY_GENERIC_PTR_NOGC_INIT.
Referenced by move_single_loop_invariants().
Definition at line 287 of file loop-invariant.c.
References can_copy_p, and GET_MODE.
Referenced by find_invariant_insn().
Definition at line 764 of file loop-invariant.c.
References BB_END, BLOCK_FOR_INSN, invariant::def, invariant::depends_on, df_insn_modify(), df_pattern_emit_after(), EXECUTE_IF_SET_IN_BITMAP, gen_move_insn(), gen_reg_rtx(), GET_MODE, i, use::insn, invariant::insn, invariants, loop_preheader_edge(), use::next, use::pos, invariant::processed, reorder_insns(), SET_DEST, single_set, edge::src, def::uses, and VARRAY_GENERIC_PTR_NOGC.
Referenced by move_invariant_reg(), and move_invariants().
Definition at line 815 of file loop-invariant.c.
References i, invariants, invariant::move, move_invariant_reg(), VARRAY_ACTIVE_SIZE, and VARRAY_GENERIC_PTR_NOGC.
Referenced by move_single_loop_invariants().
Definition at line 900 of file loop-invariant.c.
Definition at line 875 of file loop-invariant.c.
References find_invariants(), find_invariants_to_move(), free_inv_motion_data(), init_inv_motion_data(), and move_invariants().
Referenced by move_loop_invariants().
Definition at line 352 of file loop-invariant.c.
References abort, GET_CODE, use::insn, def::n_uses, use::next, use::pos, REG_P, SUBREG_REG, def::uses, and xmalloc().
Referenced by find_interesting_uses_address(), find_interesting_uses_cond(), find_interesting_uses_op(), find_interesting_uses_outer_or_nonlin(), and record_uses().
Definition at line 473 of file loop-invariant.c.
References BLOCK_FOR_INSN, CDI_DOMINATORS, defs, DF_INSN_USES, DF_REF_BB, DF_REF_CHAIN, DF_REF_DATA, DF_REF_INSN, DF_REF_LOC, dominated_by_p(), df_link::next, record_use(), and df_link::ref.
Referenced by find_invariants_insn().
| static void set_move_mark | ( | unsigned | invno | ) | [static] |
Definition at line 699 of file loop-invariant.c.
References invariant::depends_on, dump_file, EXECUTE_IF_SET_IN_BITMAP, fprintf(), invariants, invariant::move, and VARRAY_GENERIC_PTR_NOGC.
Referenced by find_invariants_to_move(), and set_move_mark().
unsigned actual_stamp [static] |
Definition at line 119 of file loop-invariant.c.
Referenced by gain_for_invariant(), get_inv_cost(), and init_inv_motion_data().
varray_type invariants [static] |
Definition at line 123 of file loop-invariant.c.
Referenced by best_gain_for_invariant(), create_new_invariant(), find_identical_invariants(), find_invariants_to_move(), free_inv_motion_data(), get_inv_cost(), init_inv_motion_data(), lambda_compute_auxillary_space(), lambda_compute_target_space(), lambda_lattice_compute_base(), lambda_loopnest_transform(), linear_transform_loops(), merge_identical_invariants(), move_invariant_reg(), move_invariants(), set_move_mark(), and SWP_Rename_TNs().
1.5.6