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

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
The original testcase hides everything behind array descriptors, even with
unrolling and vectorization disabled we end up with

  <bb 2> [local count: 214748368]:
  parm.0.data = &alist[0];
  parm.0.offset = -1;
  parm.0.dtype.elem_len = 4;
  MEM <unsigned long> [(void *)&parm.0 + 24B] = 1103806595072;
  parm.0.span = 4;
  parm.0.dim[0].stride = 1;
  parm.0.dim[0].lbound = 1;
  parm.0.dim[0].ubound = 4;
  atmp.1.data = &A.2;
  atmp.1.offset = 0;
  atmp.1.dtype.elem_len = 4;
  MEM <unsigned long> [(void *)&atmp.1 + 24B] = 1103806595072;
  atmp.1.span = 4;
  atmp.1.dim[0].stride = 1;
  atmp.1.dim[0].lbound = 0;
  atmp.1.dim[0].ubound = 3;
  _gfortran_cshift0_4 (&atmp.1, &parm.0, &C.4234, 0B);

the frontend might set the fnspec correctly to r (read-only, even transitively)
which we might use here but then the actual use is the intrinsic and the
fnspec does not say that the function acrually reads from the uninitialized
storage.

Reply via email to