Hi, this patch: - removes a superfluous test on gimple_stmt_omp_data_i_init_p in tree-parloops.c - removes unused functions gimple_stmt_omp_data_i_init_p and get_omp_data_i.
Committed to gomp-4_0-branch. Thanks, - Tom
Remove gimple_stmt_omp_data_i_init_p 2015-11-05 Tom de Vries <t...@codesourcery.com> * omp-low.c (gimple_stmt_omp_data_i_init_p, get_omp_data_i): Remove. * omp-low.h: Same. * tree-parloops.c (oacc_entry_exit_ok_1): Remove test on gimple_stmt_omp_data_i_init_p. --- gcc/omp-low.c | 48 ------------------------------------------------ gcc/omp-low.h | 2 -- gcc/tree-parloops.c | 2 -- 3 files changed, 52 deletions(-) diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 643d017..b3731e3 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -18681,54 +18681,6 @@ oacc_kernels_region_entry_p (basic_block bb, gomp_target **directive) return res; } -/* Return true if STMT is copy assignment .omp_data_i = &.omp_data_arr. */ - -bool -gimple_stmt_omp_data_i_init_p (gimple *stmt) -{ - /* Extract obj from stmt 'a = &obj. */ - if (!gimple_assign_cast_p (stmt) - && !gimple_assign_single_p (stmt)) - return false; - tree rhs = gimple_assign_rhs1 (stmt); - if (TREE_CODE (rhs) != ADDR_EXPR) - return false; - tree obj = TREE_OPERAND (rhs, 0); - - /* Check that the last statement in the preceding bb is an oacc kernels - stmt. */ - basic_block bb = gimple_bb (stmt); - gomp_target *kernels; - if (!oacc_kernels_region_entry_p (bb, &kernels)) - return false; - - /* Get omp_data_arr from the oacc kernels stmt. */ - tree data_arg = gimple_omp_target_data_arg (kernels); - tree omp_data_arr = TREE_VEC_ELT (data_arg, 0); - - /* If obj is omp_data_arr, we've found the .omp_data_i init statement. */ - return operand_equal_p (obj, omp_data_arr, 0); -} - - -/* Return omp_data_i corresponding to the assignment - .omp_data_i = &.omp_data_arr in oacc kernels region entry REGION_ENTRY. */ - -tree -get_omp_data_i (basic_block region_entry) -{ - if (!single_succ_p (region_entry)) - return NULL_TREE; - basic_block bb = single_succ (region_entry); - gimple_stmt_iterator gsi = gsi_start_bb (bb); - if (gsi_end_p (gsi)) - return NULL_TREE; - gimple *stmt = gsi_stmt (gsi); - if (!gimple_stmt_omp_data_i_init_p (stmt)) - return NULL_TREE; - return gimple_assign_lhs (stmt); -} - namespace { const pass_data pass_data_late_lower_omp = diff --git a/gcc/omp-low.h b/gcc/omp-low.h index 673b470..d1755a8 100644 --- a/gcc/omp-low.h +++ b/gcc/omp-low.h @@ -30,8 +30,6 @@ extern tree omp_reduction_init (tree, tree); extern bool make_gimple_omp_edges (basic_block, struct omp_region **, int *); extern void omp_finish_file (void); extern tree omp_member_access_dummy_var (tree); -extern bool gimple_stmt_omp_data_i_init_p (gimple *); -extern tree get_omp_data_i (basic_block); extern bool oacc_kernels_region_entry_p (basic_block, gomp_target **); extern basic_block get_oacc_kernels_region_exit (basic_block); extern basic_block loop_get_oacc_kernels_region_entry (struct loop *); diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index c038dfe..7e888d8 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -2956,8 +2956,6 @@ oacc_entry_exit_ok_1 (bitmap in_loop_bbs, vec<basic_block> region_bbs, } else if (gimple_code (stmt) == GIMPLE_OMP_RETURN) continue; - else if (gimple_stmt_omp_data_i_init_p (stmt)) - continue; else if (!gimple_has_side_effects (stmt) && !gimple_could_trap_p (stmt) && !stmt_could_throw_p (stmt) -- 1.9.1