https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119367

--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #2)
> https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/dwarf2out.cc;
> h=a2acfd1d35654827492b69ec35b571accf2263a4;hb=HEAD#l12994

Namely, output_one_line_info_table:

12992         case LI_adv_address:
12993           {
12994             ASM_GENERATE_INTERNAL_LABEL (line_label, LINE_CODE_LABEL,
ent->val);
12995             char prev_label[MAX_ARTIFICIAL_LABEL_BYTES];
12996             ASM_GENERATE_INTERNAL_LABEL (prev_label, LINE_CODE_LABEL,
prev_addr->val);

* * *

Side remark: The code is the following with the array size n == 10000

  subroutine foo (p, v, w, n)
    double precision, pointer :: p(:), v(:), w(:)
    double precision :: q(n)
    integer :: i, n

    !$omp target if (n > 256) map (to: v(1:n), w(:n)) map (from: p(1:n), q)
    !$omp parallel do simd
      do i = 1, n
        p(i) = v(i) * w(i)
        q(i) = p(i)
      end do
    !$omp end target

The problem seems to be that 'pointer' can be noncontiguous, where the stride
handling seems to cause the issue of too many lines of code, given that
'allocatable' or assumed-shape arrays work.
['contiguous' does not help, but that's the unrelated PR118471.]

Reply via email to