On Fri, Jul 31, 2015 at 11:22:30AM +0200, Richard Biener wrote:
> On Fri, Jul 31, 2015 at 10:43 AM, Jakub Jelinek <[email protected]> wrote:
> > Hi!
> >
> > I wonder if we shouldn't change:
> >
> > TREE_TYPE (ctx->receiver_decl)
> > = build_qualified_type (build_reference_type (type),
> > TYPE_QUAL_RESTRICT);
> >
> > in fixup_child_record_type to add:
> >
> > if (is_gimple_omp_offloaded (ctx->stmt))
> > type = build_qualified_type (type, TYPE_QUAL_CONST);
> >
> > before it (and perhaps also add | TYPE_QUAL_CONST to TYPE_QUAL_RESTRICT for
> > all
> > constructs). I mean, aren't all the pointers in *.omp_data_i for the target
> > constructs constant in the offloaded region? Perhaps that could result in
> > better generated code (though perhaps just the restrict helps enough).
> > Can you think of any case where it is not constant?
>
> Const qualification of a pointer or reference doesn't result in any
> optimization. The
> decl you refer to has to be constant.
Even if the pointer would be addressable? But it isn't in this case.
Still the
if (is_gimple_omp_offloaded (ctx->stmt))
type = build_qualified_type (type, TYPE_QUAL_CONST);
would constify what the reference refers to. Maybe it doesn't make
any difference either due to TYPE_QUAL_RESTRICT on the reference though.
Jakub