On Thu, Sep 20, 2018 at 11:06:40AM -0700, Cesar Philippidis wrote:
> 2018-XX-YY Chung-Lin Tang <[email protected]>
> Cesar Philippidis <[email protected]>
>
> gcc/
> * cfgloop.h (struct loop): Add 'bool marked_independent' field.
> * omp-expand.c (struct omp_region): Add 'int kind' and
> 'bool independent' fields.
> (expand_omp_for): Set 'marked_independent' field for loop
> corresponding to region.
> (find_omp_for_region_data): New function.
> (build_omp_regions_1): Set kind field. Call
> find_omp_for_region_data for GIMPLE_OMP_FOR statements.
In addition to what I've just mentioned in another mail:
> --- a/gcc/omp-expand.c
> +++ b/gcc/omp-expand.c
> @@ -107,6 +107,12 @@ struct omp_region
>
> /* True if this is nested inside an OpenACC kernels construct. */
> bool inside_kernels_p;
> +
> + /* Records a generic kind field. */
> + int kind;
> +
> + /* For an OpenACC loop directive, true if has the 'independent' clause. */
> + bool independent;
> };
I'm not sure why you need kind cached, you can get from the region at the
stmt and from there at the kind easily. And even if it would be a good idea
to cache it, you don't want to mix bool and non-bool members in the
structure to avoid padding gaps.
Jakub