This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[OpenACC] minor code cleanup
- From: Nathan Sidwell <nathan at acm dot org>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 2 May 2016 14:16:25 -0400
- Subject: [OpenACC] minor code cleanup
- Authentication-results: sourceware.org; auth=none
While working on some more loop partitioning improvements, I noticed some
unnecessary checking. By construction an openacc loop must have at least one
head/tail marker, so we should assert that earlier when lowering the loop (in
the common compiler) and then rely on it later when processing the loop (in the
accelerator compiler).
ok for trunk?
nathan
2016-05-02 Nathan Sidwell <nathan@codesourcery.com>
* omp-low.c (lower_oacc_head_tail): Assert there is at least one
marker.
(oacc_loop_process): Check mask for loop termination.
Index: omp-low.c
===================================================================
--- omp-low.c (revision 235758)
+++ omp-low.c (working copy)
@@ -6402,12 +6402,10 @@ lower_oacc_head_tail (location_t loc, tr
gimple_seq_add_stmt (head, gimple_build_assign (ddvar, integer_zero_node));
unsigned count = lower_oacc_head_mark (loc, ddvar, clauses, head, ctx);
- if (!count)
- lower_oacc_loop_marker (loc, ddvar, false, integer_zero_node, tail);
-
tree fork_kind = build_int_cst (unsigned_type_node, IFN_UNIQUE_OACC_FORK);
tree join_kind = build_int_cst (unsigned_type_node, IFN_UNIQUE_OACC_JOIN);
+ gcc_assert (count);
for (unsigned done = 1; count; count--, done++)
{
gimple_seq fork_seq = NULL;
@@ -19331,10 +19329,8 @@ oacc_loop_process (oacc_loop *loop)
oacc_loop_xform_loop (loop->head_end, loop->ifns, mask_arg, chunk_arg);
- for (ix = 0; ix != GOMP_DIM_MAX && loop->heads[ix]; ix++)
+ for (ix = 0; ix != GOMP_DIM_MAX && mask; ix++)
{
- gcc_assert (mask);
-
while (!(GOMP_DIM_MASK (dim) & mask))
dim++;