GCC Middle and Back End API Reference
tree-ssa-loop.c File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
#include "gimple.h"
#include "tree-ssa-loop-ivopts.h"
#include "tree-ssa-loop-manip.h"
#include "tree-ssa-loop-niter.h"
#include "tree-ssa-loop.h"
#include "tree-pass.h"
#include "cfgloop.h"
#include "flags.h"
#include "tree-inline.h"
#include "tree-scalar-evolution.h"
#include "diagnostic-core.h"
#include "tree-vectorizer.h"
Include dependency graph for tree-ssa-loop.c:

Macros

#define MAX_LSM_NAME_LENGTH   40

Functions

static bool gate_tree_loop ()
gimple_opt_passmake_pass_tree_loop ()
static unsigned int tree_ssa_loop_init ()
gimple_opt_passmake_pass_tree_loop_init ()
static unsigned int tree_loop_vectorize ()
static bool gate_tree_loop_vectorize ()
gimple_opt_passmake_pass_vectorize ()
static unsigned int check_data_deps ()
static bool gate_check_data_deps ()
gimple_opt_passmake_pass_check_data_deps ()
static bool gate_scev_const_prop ()
gimple_opt_passmake_pass_scev_cprop ()
static unsigned int tree_ssa_loop_bounds ()
gimple_opt_passmake_pass_record_bounds ()
static unsigned int tree_ssa_loop_ivopts ()
static bool gate_tree_ssa_loop_ivopts ()
gimple_opt_passmake_pass_iv_optimize ()
static unsigned int tree_ssa_loop_done ()
gimple_opt_passmake_pass_tree_loop_done ()
bool for_each_index (tree *addr_p, bool(*cbck)(tree, tree *, void *), void *data)
static void lsm_tmp_name_add ()
static void gen_lsm_tmp_name ()
char * get_lsm_tmp_name ()
unsigned tree_num_loop_insns ()

Variables

static char lsm_tmp_name [MAX_LSM_NAME_LENGTH+1]
static int lsm_tmp_name_length

Macro Definition Documentation

#define MAX_LSM_NAME_LENGTH   40

The name and the length of the currently generated variable for lsm.


Function Documentation

static unsigned int check_data_deps ( )
static

Check the correctness of the data dependence analyzers.

Referenced by gate_check_data_deps().

bool for_each_index ( tree addr_p,
bool(*)(tree, tree *, void *)  cbck,
void *  data 
)

Calls CBCK for each index in memory reference ADDR_P. There are two kinds situations handled; in each of these cases, the memory reference and DATA are passed to the callback:

Access to an array: ARRAY_{RANGE_}REF (base, index). In this case we also pass the pointer to the index to the callback.

Pointer dereference: INDIRECT_REF (addr). In this case we also pass the pointer to addr to the callback.

If the callback returns false, the whole search stops and false is returned. Otherwise the function returns true after traversing through the whole reference *ADDR_P.

If the component has varying offset, it behaves like index as well.

Referenced by refs_independent_p().

static bool gate_check_data_deps ( )
static
static bool gate_scev_const_prop ( )
static

Propagation of constants using scev.

static bool gate_tree_loop ( )
static

Loop optimizations over tree-ssa. Copyright (C) 2003-2013 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/. The loop superpass.

static bool gate_tree_ssa_loop_ivopts ( )
static
static void gen_lsm_tmp_name ( )
static

Stores the name for temporary variable that replaces REF to lsm_tmp_name.

Nothing.

char* get_lsm_tmp_name ( )

Determines name for temporary variable that replaces REF. The name is accumulated into the lsm_tmp_name variable. N is added to the name of the temporary.

static void lsm_tmp_name_add ( )
static

Adds S to lsm_tmp_name.

gimple_opt_pass* make_pass_check_data_deps ( )
gimple_opt_pass* make_pass_iv_optimize ( )

References GIMPLE_PASS, and OPTGROUP_LOOP.

gimple_opt_pass* make_pass_record_bounds ( )
gimple_opt_pass* make_pass_scev_cprop ( )
gimple_opt_pass* make_pass_tree_loop ( )
gimple_opt_pass* make_pass_tree_loop_done ( )

References TREE_CODE, and TREE_OPERAND.

gimple_opt_pass* make_pass_tree_loop_init ( )
gimple_opt_pass* make_pass_vectorize ( )
static unsigned int tree_loop_vectorize ( )
static

Loop autovectorization.

References cfun.

Referenced by gate_tree_loop_vectorize().

unsigned tree_num_loop_insns ( )

Computes an estimated number of insns in LOOP, weighted by WEIGHTS.

Referenced by tree_ssa_unswitch_loops().

static unsigned int tree_ssa_loop_bounds ( )
static

Record bounds on numbers of iterations of loops.

References opt_pass::execute(), gimple_opt_pass::gimple_opt_pass(), GIMPLE_PASS, OPTGROUP_NONE, PROP_cfg, and PROP_ssa.

static unsigned int tree_ssa_loop_done ( )
static

Loop optimizer finalization.

References opt_pass::execute(), and gimple_opt_pass::gimple_opt_pass().

static unsigned int tree_ssa_loop_init ( )
static

Loop optimizer initialization.

We might discover new loops, e.g. when turning irreducible regions into reducible.

static unsigned int tree_ssa_loop_ivopts ( )
static

Induction variable optimizations.

References GIMPLE_PASS, and OPTGROUP_LOOP.

Referenced by gate_tree_ssa_loop_ivopts().


Variable Documentation

char lsm_tmp_name[MAX_LSM_NAME_LENGTH+1]
static
int lsm_tmp_name_length
static