[gomp4] Preserve NVPTX "reconvergence" points

Bernd Schmidt bernds@codesourcery.com
Wed Jun 24 13:37:00 GMT 2015


On 06/19/2015 03:45 PM, Jakub Jelinek wrote:

> If the loop remains in the IL (isn't optimized away as unreachable or
> isn't removed, e.g. as a non-loop - say if it contains a noreturn call),
> the flags on struct loop should be still there.  For the loop clauses
> (reduction always, and private/lastprivate if addressable etc.) for
> OpenMP simd / Cilk+ simd we use special arrays indexed by internal
> functions, which then during vectorization are shrunk (but in theory could
> be expanded too) to the right vectorization factor if vectorized, of course
> accesses within the loop vectorized using SIMD, and if not vectorized,
> shrunk to 1 element.

I'd appreciate if you could describe that mechanism in more detail. As 
far as I can tell it is very poorly commented and documented in the 
code. I mean, it doesn't even follow the minimal coding standards of 
describing function inputs:

/* Helper function of lower_rec_input_clauses, used for #pragma omp simd
    privatization.  */

static bool
lower_rec_simd_input_clauses (tree new_var, omp_context *ctx, int &max_vf,
			      tree &idx, tree &lane, tree &ivar, tree &lvar)


Bernd



More information about the Gcc-patches mailing list