https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104717
--- Comment #5 from Tom de Vries <vries at gcc dot gnu.org> ---
At original:
...
void foo ()
...
#pragma acc parallel
...
integer(kind=4) A.3[0:D.4266];
...
At gimple:
...
void foo ()
...
#pragma omp target oacc_parallel
...
integer(kind=4)[0:D.4266] * A.14;
integer(kind=4) A.3[0:D.4266] [value-expr: *A.14];
...
A.14 = __builtin_alloca_with_align (D.4329, 32);
...
And at ompexp:
...
void foo.0._omp_fn.0 ()
...
integer(kind=4) A.3[0:D.4266] [value-expr: *A.14];
integer(kind=4)[0:D.4266] * A.14;
...
A.14 = __builtin_alloca_with_align (D.4392, 32);
...
and:
...
void foo ()
...
__builtin_GOACC_parallel_keyed (-1, foo.0._omp_fn.0, 4, &.omp_data_arr.20,
&.omp_data_sizes.21, &.omp_data_kinds.22, 0);
...
However, somehow the A.3 remains part of the BLOCK_VARS of foo, so when ipa
inline (activated by pta-ipa, which does node->get_body ()) inlines foo into
main, it does a remap of block-var A.3, and then a remap of its value-expr
A.14, and then a remap of its TREE_TYPE. Which has the effect of changing the
TREE_TYPE of A.14 in foo.0._omp_fn.0.