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

Go to the source code of this file.

Functions

void dump_iv (FILE *, struct iv *)
 
void dump_use (FILE *, struct iv_use *)
 
void dump_uses (FILE *, struct ivopts_data *)
 
void dump_cand (FILE *, struct iv_cand *)
 
bool contains_abnormal_ssa_name_p (tree)
 
class loopoutermost_invariant_loop_for_expr (class loop *, tree)
 
bool expr_invariant_in_loop_p (class loop *, tree)
 
bool may_be_nonaddressable_p (tree expr)
 
void tree_ssa_iv_optimize (void)
 
void create_canonical_iv (class loop *, edge, tree, tree *=NULL, tree *=NULL)
 

Function Documentation

◆ contains_abnormal_ssa_name_p()

bool contains_abnormal_ssa_name_p ( tree expr)
extern
Returns true if EXPR contains a ssa name that occurs in an
abnormal phi node.   

References contains_abnormal_ssa_name_p_1(), NULL, NULL_TREE, and walk_tree_without_duplicates.

Referenced by can_unroll_loop_p(), final_value_replacement_loop(), find_bivs(), find_givs_in_stmt_scev(), and niter_for_exit().

◆ create_canonical_iv()

void create_canonical_iv ( class loop * loop,
edge exit,
tree niter,
tree * var_before = NULL,
tree * var_after = NULL )
Adds a canonical induction variable to LOOP iterating NITER times.  EXIT
is the exit edge whose condition is replaced.  The ssa versions of the new
IV before and after increment will be stored in VAR_BEFORE and VAR_AFTER
if they are not NULL.   

References as_a(), build_int_cst(), create_iv(), dump_file, dump_flags, EDGE_SUCC, fold_build2, gimple_cond_set_code(), gimple_cond_set_lhs(), gimple_cond_set_rhs(), gsi_last_bb(), NULL_TREE, loop::num, print_generic_expr(), TDF_DETAILS, TDF_SLIM, TREE_TYPE, type(), and update_stmt().

Referenced by canonicalize_loop_induction_variables(), and tree_loop_interchange::interchange_loops().

◆ dump_cand()

void dump_cand ( FILE * file,
struct iv_cand * cand )
extern
Dumps information about induction variable candidate CAND to FILE.   

References dump_bitmap(), dump_iv(), IP_AFTER_USE, IP_BEFORE_USE, IP_END, IP_NORMAL, IP_ORIGINAL, print_generic_expr(), and TDF_SLIM.

Referenced by add_candidate_1(), and create_new_ivs().

◆ dump_iv()

void dump_iv ( FILE * ,
struct iv *  )
extern
Header file for Induction variable optimizations.
   Copyright (C) 2013-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   

◆ dump_use()

void dump_use ( FILE * file,
struct iv_use * use )
extern
Dumps information about the USE to FILE.   

References dump_iv(), print_generic_expr(), print_gimple_stmt(), and TDF_SLIM.

Referenced by dump_groups().

◆ dump_uses()

void dump_uses ( FILE * ,
struct ivopts_data *  )
extern

◆ expr_invariant_in_loop_p()

◆ may_be_nonaddressable_p()

◆ outermost_invariant_loop_for_expr()

class loop * outermost_invariant_loop_for_expr ( class loop * loop,
tree expr )
extern
Returns the outermost loop EXPR is obviously invariant in
relative to the loop LOOP, i.e. if all its operands are defined
outside of the returned loop.  Returns NULL if EXPR is not
even obviously invariant in LOOP.   

References current_loops, EXPR_P, flow_bb_inside_loop_p(), gimple_bb(), i, is_gimple_min_invariant(), loop_depth(), basic_block_def::loop_father, MAX, NULL, outermost_invariant_loop_for_expr(), SSA_NAME_DEF_STMT, superloop_at_depth(), TREE_CODE, TREE_OPERAND, and TREE_OPERAND_LENGTH.

Referenced by outermost_invariant_loop_for_expr(), vect_enhance_data_refs_alignment(), and vect_loop_versioning().

◆ tree_ssa_iv_optimize()