/* Single entry single exit control flow regions.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010
+ Free Software Foundation, Inc.
Contributed by Jan Sjodin <jan.sjodin@amd.com> and
Sebastian Pop <sebastian.pop@amd.com>.
/* Parameters used within the SCOP. */
VEC (tree, heap) *params;
- /* Used to quickly retrieve the index of a parameter in PARAMS. */
- htab_t params_index;
-
- /* Store the names of the parameters that are passed to CLooG. */
- char **params_names;
-
/* Loops completely contained in the SCOP. */
bitmap loops;
VEC (loop_p, heap) *loop_nest;
#define SESE_EXIT(S) (S->exit)
#define SESE_EXIT_BB(S) (S->exit->dest)
#define SESE_PARAMS(S) (S->params)
-#define SESE_PARAMS_INDEX(S) (S->params_index)
-#define SESE_PARAMS_NAMES(S) (S->params_names)
#define SESE_LOOPS(S) (S->loops)
#define SESE_LOOP_NEST(S) (S->loop_nest)
#define SESE_ADD_PARAMS(S) (S->add_params)
return SESE_ENTRY (sese)->src;
}
-/* Stores the INDEX in a vector for a given clast NAME. */
-
-typedef struct clast_name_index {
- int index;
- const char *name;
-} *clast_name_index_p;
-
-/* Returns a pointer to a new element of type clast_name_index_p built
- from NAME and INDEX. */
-
-static inline clast_name_index_p
-new_clast_name_index (const char *name, int index)
-{
- clast_name_index_p res = XNEW (struct clast_name_index);
-
- res->name = name;
- res->index = index;
- return res;
-}
-
-/* For a given clast NAME, returns -1 if it does not correspond to any
- parameter, or otherwise, returns the index in the PARAMS or
- SCATTERING_DIMENSIONS vector. */
-
-static inline int
-clast_name_to_index (const char *name, htab_t index_table)
-{
- struct clast_name_index tmp;
- PTR *slot;
-
- tmp.name = name;
- slot = htab_find_slot (index_table, &tmp, NO_INSERT);
-
- if (slot && *slot)
- return ((struct clast_name_index *) *slot)->index;
-
- return -1;
-}
-
-/* Records in INDEX_TABLE the INDEX for NAME. */
-
-static inline void
-save_clast_name_index (htab_t index_table, const char *name, int index)
-{
- struct clast_name_index tmp;
- PTR *slot;
-
- tmp.name = name;
- slot = htab_find_slot (index_table, &tmp, INSERT);
-
- if (slot)
- *slot = new_clast_name_index (name, index);
-}
-
-/* Print to stderr the element ELT. */
-
-static inline void
-debug_clast_name_index (clast_name_index_p elt)
-{
- fprintf (stderr, "(index = %d, name = %s)\n", elt->index, elt->name);
-}
-
-/* Helper function for debug_rename_map. */
-
-static inline int
-debug_clast_name_indexes_1 (void **slot, void *s ATTRIBUTE_UNUSED)
-{
- struct clast_name_index *entry = (struct clast_name_index *) *slot;
- debug_clast_name_index (entry);
- return 1;
-}
-
-/* Print to stderr all the elements of MAP. */
-
-static inline void
-debug_clast_name_indexes (htab_t map)
-{
- htab_traverse (map, debug_clast_name_indexes_1, NULL);
-}
-
-/* Computes a hash function for database element ELT. */
-
-static inline hashval_t
-clast_name_index_elt_info (const void *elt)
-{
- return htab_hash_pointer (((const struct clast_name_index *) elt)->name);
-}
-
-/* Compares database elements E1 and E2. */
-
-static inline int
-eq_clast_name_indexes (const void *e1, const void *e2)
-{
- const struct clast_name_index *elt1 = (const struct clast_name_index *) e1;
- const struct clast_name_index *elt2 = (const struct clast_name_index *) e2;
-
- return (elt1->name == elt2->name);
-}
-
\f
/* A single entry single exit specialized for conditions. */
} *ifsese;
extern void if_region_set_false_region (ifsese, sese);
-extern ifsese create_if_region_on_edge (edge, tree);
extern ifsese move_sese_in_condition (sese);
extern edge get_true_edge_from_guard_bb (basic_block);
extern edge get_false_edge_from_guard_bb (basic_block);
+extern void set_ifsese_condition (ifsese, tree);
static inline edge
if_region_entry (ifsese if_region)
extern hashval_t rename_map_elt_info (const void *);
extern int eq_rename_map_elts (const void *, const void *);
extern void set_rename (htab_t, tree, tree);
+extern void rename_nb_iterations (htab_t);
+extern void rename_sese_parameters (htab_t, sese);
/* Constructs a new SCEV_INFO_STR structure for VAR and INSTANTIATED_BELOW. */
VEC (gimple, heap) *conditions;
VEC (gimple, heap) *condition_cases;
VEC (data_reference_p, heap) *data_refs;
- htab_t cloog_iv_types;
} *gimple_bb_p;
#define GBB_BB(GBB) GBB->bb
#define GBB_DATA_REFS(GBB) GBB->data_refs
#define GBB_CONDITIONS(GBB) GBB->conditions
#define GBB_CONDITION_CASES(GBB) GBB->condition_cases
-#define GBB_CLOOG_IV_TYPES(GBB) GBB->cloog_iv_types
/* Return the innermost loop that contains the basic block GBB. */
return sese_loop_depth (region, common);
}
-extern void print_gimple_bb (FILE *, gimple_bb_p, int, int);
-extern void debug_gbb (gimple_bb_p, int);
-
#endif