From a0dd14403d8cd1bbf4d47eec81b7eae81c9605d3 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Wed, 25 Nov 2009 04:54:30 +0000 Subject: graphite-dependences.c (reduction_ddr): New. 2009-10-05 Sebastian Pop * graphite-dependences.c (reduction_ddr): New. (graphite_legal_transform_bb): Call reduction_ddr. * graphite-poly.c (new_poly_bb): Pass a new bool parameter. Initialize PBB_IS_REDUCTION. * graphite-poly.h (struct poly_bb): New bool field is_reduction. (PBB_IS_REDUCTION): New. (new_poly_bb): Update declaration. * graphite-scop-detection.h (build_scop_bbs): Removed. (nb_reductions_in_loop): Removed. * graphite-sese-to-poly.c (try_generate_gimple_bb): Pass a sbitmap parameter for reductions. (try_generate_gimple_bb): Update call to new_poly_bb. (build_scop_bbs_1): Same. (build_scop_bbs): Same. (gsi_for_phi_node): New. (scalar_close_phi_node_p): Remove gcc_assert. (split_reduction_stmt): New. (is_reduction_operation_p): New. (phi_contains_arg): New. (follow_ssa_with_commutative_ops): New. (detect_commutative_reduction_arg): New. (detect_commutative_reduction_assign): New. (follow_inital_value_to_phi): New. (edge_initial_value_for_loop_phi): New. (initial_value_for_loop_phi): New. (detect_commutative_reduction): New. (translate_scalar_reduction_to_array_for_stmt): New. (insert_copyout): New. (insert_copyin): New. (translate_scalar_reduction_to_array): New. (rewrite_commutative_reductions_out_of_ssa_close_phi): New. (rewrite_commutative_reductions_out_of_ssa_loop): New. (rewrite_commutative_reductions_out_of_ssa): New. (build_poly_scop): Call rewrite_commutative_reductions_out_of_ssa. * sese.h (split_region_for_bb): New. * gcc.dg/graphite/graphite.exp (DEFAULT_CFLAGS_GRAPHITE_BLOCK): Add -ffast-math. * gcc.dg/graphite/interchange-1.c: Fix format. * gcc.dg/graphite/interchange-10.c: New. From-SVN: r154561 --- gcc/sese.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'gcc/sese.h') diff --git a/gcc/sese.h b/gcc/sese.h index ace63ba6719..ca167f53ce6 100644 --- a/gcc/sese.h +++ b/gcc/sese.h @@ -188,6 +188,33 @@ sese_loop_depth (sese region, loop_p loop) return depth; } +/* Splits BB to make a single entry single exit region. */ + +static inline sese +split_region_for_bb (basic_block bb) +{ + edge entry, exit; + + if (single_pred_p (bb)) + entry = single_pred_edge (bb); + else + { + entry = split_block_after_labels (bb); + bb = single_succ (bb); + } + + if (single_succ_p (bb)) + exit = single_succ_edge (bb); + else + { + gimple_stmt_iterator gsi = gsi_last_bb (bb); + gsi_prev (&gsi); + exit = split_block (bb, gsi_stmt (gsi)); + } + + return new_sese (entry, exit); +} + /* Returns the block preceding the entry of a SESE. */ static inline basic_block -- cgit v1.2.1