Commit 7b10257f by Sebastian Pop Committed by Sebastian Pop

re PR middle-end/38492 ([graphite] segfaulting code when compiled with…

re PR middle-end/38492 ([graphite] segfaulting code when compiled with -fgraphite -fgraphite-identity)

2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>

	PR tree-optimization/38492
	* graphite.c (rename_map_elt, debug_rename_elt,
        debug_rename_map_1, debug_rename_map, new_rename_map_elt,
        rename_map_elt_info, eq_rename_map_elts,
        get_new_name_from_old_name, bb_in_sese_p): Moved around.
	(sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
	(sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
	(sese_build_livein_liveouts): New.
	(new_sese, free_sese): New.
	(new_scop): Call new_sese.
	(free_scop): Call free_sese.
	(rename_variables_from_edge, rename_phis_end_scop): Removed.
	(register_old_new_names): Renamed register_old_and_new_names.
	(register_scop_liveout_renames, add_loop_exit_phis,
	insert_loop_close_phis, struct igp,
	default_liveout_before_guard, add_guard_exit_phis,
	insert_guard_phis, copy_renames): New.
	(translate_clast): Call insert_loop_close_phis and insert_guard_phis.
	(sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
	(rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
	(scop_adjust_phis_for_liveouts): New.
	(gloog): Call scop_adjust_phis_for_liveouts.

	* graphite.h (struct sese): Documented.  Added fields liveout,
        num_ver and livein.
	(SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
	(new_sese, free_sese, sese_build_livein_liveouts): Declared.
	(struct scop): Added field liveout_renames.
	(SCOP_LIVEOUT_RENAMES): New.

From-SVN: r143097
parent eefe5da0
2009-01-05 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/38492
* graphite.c (rename_map_elt, debug_rename_elt,
debug_rename_map_1, debug_rename_map, new_rename_map_elt,
rename_map_elt_info, eq_rename_map_elts,
get_new_name_from_old_name, bb_in_sese_p): Moved around.
(sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
(sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
(sese_build_livein_liveouts): New.
(new_sese, free_sese): New.
(new_scop): Call new_sese.
(free_scop): Call free_sese.
(rename_variables_from_edge, rename_phis_end_scop): Removed.
(register_old_new_names): Renamed register_old_and_new_names.
(register_scop_liveout_renames, add_loop_exit_phis,
insert_loop_close_phis, struct igp,
default_liveout_before_guard, add_guard_exit_phis,
insert_guard_phis, copy_renames): New.
(translate_clast): Call insert_loop_close_phis and insert_guard_phis.
(sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
(rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
(scop_adjust_phis_for_liveouts): New.
(gloog): Call scop_adjust_phis_for_liveouts.
* graphite.h (struct sese): Documented. Added fields liveout,
num_ver and livein.
(SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
(new_sese, free_sese, sese_build_livein_liveouts): Declared.
(struct scop): Added field liveout_renames.
(SCOP_LIVEOUT_RENAMES): New.
2009-01-05 Harsha Jagasia <harsha.jagasia@amd.com>
PR tree-optimization/38510
......
......@@ -275,13 +275,36 @@ DEF_VEC_ALLOC_P (name_tree, heap);
by two edges. */
typedef struct sese
{
/* Single ENTRY and single EXIT from the SESE region. */
edge entry, exit;
/* REGION_BASIC_BLOCKS contains the set of all the basic blocks
belonging to the SESE region. */
struct pointer_set_t *region_basic_blocks;
/* An SSA_NAME version is flagged in the LIVEOUT bitmap if the
SSA_NAME is defined inside and used outside the SESE region. */
bitmap liveout;
/* The overall number of SSA_NAME versions used to index LIVEIN. */
int num_ver;
/* For each SSA_NAME version VER in LIVEOUT, LIVEIN[VER] contains
the set of basic blocks indices that contain a use of VER. */
bitmap *livein;
} *sese;
#define SESE_ENTRY(S) (S->entry)
#define SESE_EXIT(S) (S->exit)
#define SESE_REGION_BBS(S) (S->region_basic_blocks)
#define SESE_LIVEOUT(S) (S->liveout)
#define SESE_LIVEIN(S) (S->livein)
#define SESE_LIVEIN_VER(S, I) (S->livein[I])
#define SESE_NUM_VER(S) (S->num_ver)
extern sese new_sese (edge, edge);
extern void free_sese (sese);
extern void sese_build_livein_liveouts (sese);
/* A SCOP is a Static Control Part of the program, simple enough to be
represented in polyhedral form. */
......@@ -319,6 +342,10 @@ struct scop
can only add new params before generating the bb domains, otherwise they
become invalid. */
bool add_params;
/* LIVEOUT_RENAMES registers the rename mapping that has to be
applied after code generation. */
htab_t liveout_renames;
};
#define SCOP_BBS(S) S->bbs
......@@ -341,6 +368,7 @@ struct scop
#define SCOP_PROG(S) S->program
#define SCOP_LOOP2CLOOG_LOOP(S) S->loop2cloog_loop
#define SCOP_LOOPS_MAPPING(S) S->loops_mapping
#define SCOP_LIVEOUT_RENAMES(S) S->liveout_renames
extern void debug_scop (scop_p, int);
extern void debug_scops (int);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment