Go to the source code of this file.
Functions |
sese | new_sese (edge, edge) |
void | free_sese (sese) |
void | sese_insert_phis_for_liveouts (sese, basic_block, edge, edge) |
void | build_sese_loop_nests (sese) |
edge | copy_bb_and_scalar_dependences (basic_block, sese, edge, vec< tree >, bool *) |
struct loop * | outermost_loop_in_sese (sese, basic_block) |
tree | scalar_evolution_in_region (sese, loop_p, tree) |
static bool | sese_contains_loop () |
static unsigned | sese_nb_params () |
static bool | bb_in_region () |
static bool | bb_in_sese_p () |
static bool | stmt_in_sese_p () |
static bool | defined_in_sese_p () |
static bool | loop_in_sese_p () |
static unsigned int | sese_loop_depth () |
static sese | split_region_for_bb () |
static basic_block | block_before_sese () |
void | if_region_set_false_region (ifsese, sese) |
ifsese | move_sese_in_condition (sese) |
edge | get_true_edge_from_guard_bb (basic_block) |
edge | get_false_edge_from_guard_bb (basic_block) |
void | set_ifsese_condition (ifsese, tree) |
static edge | if_region_entry () |
static edge | if_region_exit () |
static basic_block | if_region_get_condition_block () |
hashval_t | rename_map_elt_info (const void *) |
int | eq_rename_map_elts (const void *, const void *) |
static rename_map_elt | new_rename_map_elt () |
static void | recompute_all_dominators () |
static struct loop * | gbb_loop () |
static loop_p | gbb_loop_at_index () |
static int | nb_common_loops () |
static bool | scev_analyzable_p () |
Typedef Documentation
A single entry single exit specialized for conditions.
Structure containing the mapping between the old names and the new
names used after block copy in the new loop context.
A Single Entry, Single Exit region is a part of the CFG delimited
by two edges.
Function Documentation
static bool bb_in_region |
( |
| ) |
|
|
inlinestatic |
Checks whether BB is contained in the region delimited by ENTRY and
EXIT blocks.
Check that there are no edges coming in the region: all the
predecessors of EXIT are dominated by ENTRY.
static bool bb_in_sese_p |
( |
| ) |
|
|
inlinestatic |
void build_sese_loop_nests |
( |
sese |
| ) |
|
Copies BB and includes in the copied BB all the statements that can
be reached following the use-def chains from the memory accesses,
and returns the next edge following this new block. GLOOG_ERROR is
set when the code generation cannot continue.
static bool defined_in_sese_p |
( |
| ) |
|
|
inlinestatic |
int eq_rename_map_elts |
( |
const void * |
, |
|
|
const void * |
|
|
) |
| |
static struct loop* gbb_loop |
( |
| ) |
|
|
staticread |
static loop_p gbb_loop_at_index |
( |
| ) |
|
|
inlinestatic |
Returns the gimple loop, that corresponds to the loop_iterator_INDEX.
If there is no corresponding gimple loop, we return NULL.
Referenced by graphite_create_new_loop().
static edge if_region_entry |
( |
| ) |
|
|
inlinestatic |
static edge if_region_exit |
( |
| ) |
|
|
inlinestatic |
static bool loop_in_sese_p |
( |
| ) |
|
|
inlinestatic |
static int nb_common_loops |
( |
| ) |
|
|
inlinestatic |
The number of common loops in REGION for GBB1 and GBB2.
static void recompute_all_dominators |
( |
| ) |
|
|
inlinestatic |
hashval_t rename_map_elt_info |
( |
const void * |
| ) |
|
static bool scev_analyzable_p |
( |
| ) |
|
|
inlinestatic |
Return true when DEF can be analyzed in REGION by the scalar
evolution analyzer.
When Graphite generates code for a scev, the code generator
expresses the scev in function of a single induction variable.
This is unsafe for floating point computations, as it may replace
a floating point sum reduction with a multiplication. The
following test returns false for non integer types to avoid such
problems.
Referenced by rewrite_reductions_out_of_ssa().
static bool sese_contains_loop |
( |
| ) |
|
|
inlinestatic |
@verbatim
Insert in the block BB phi nodes for variables defined in REGION and used outside the REGION. The code generation moves REGION in the else clause of an "if (1)" and generates code in the then clause that is at this point empty:
| if (1) | empty; | else | REGION;
References edge_def::flags.
static unsigned int sese_loop_depth |
( |
| ) |
|
|
inlinestatic |
Returns the loop depth of LOOP in REGION. The loop depth
is the same as the normal loop depth, but limited by a region.
Example:
loop_0
loop_1
{
S0
<- region start
S1
loop_2
S2
S3
<- region end
}
loop_0 does not exist in the region -> invalid
loop_1 exists, but is not completely contained in the region -> depth 0
loop_2 is completely contained -> depth 1
Referenced by gbb_loop().
static unsigned sese_nb_params |
( |
| ) |
|
|
inlinestatic |
The number of parameters in REGION.
static sese split_region_for_bb |
( |
| ) |
|
|
inlinestatic |
Splits BB to make a single entry single exit region.
static bool stmt_in_sese_p |
( |
| ) |
|
|
inlinestatic |
Returns true when STMT is defined in REGION.