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.]