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.

Reply via email to