https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84640
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Can be easily seen with: diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index a970e017c90..66d9450d457 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -2171,7 +2171,9 @@ gfc_simplify_cshift (gfc_expr *array, gfc_expr *shift, gfc_expr *dim) while (count[n] == extent[n]) { count[n] = 0; + fprintf (stderr, "p: %p, ss_ex[n]: %ld\n", rptr, ss_ex[n]); rptr -= ss_ex[n]; + fprintf (stderr, "p2: %p\n", rptr); sptr -= ss_ex[n]; if (shiftvec) hptr -= hs_ex[n]; Then: $ ./gcc/xgcc -Bgcc /home/marxin/Programming/gcc/gcc/testsuite/gfortran.dg/simplify_cshift_1.f90 -c -O p: 0x7824c48, ss_ex[n]: 433791696997 p2: 0xfffffcd807824920 p: 0x400000780db40, ss_ex[n]: 433791696997 p2: 0x3fcd80780d818 p: 0x40000078170e0, ss_ex[n]: 433791696997 p2: 0x3fcd807816db8 p: 0x4000007818be0, ss_ex[n]: 12 p2: 0x4000007818b80 p: 0x80781f5d0, ss_ex[n]: 126035584 p2: 0x7cb68c1d0 p: 0x10078216b0, ss_ex[n]: -1008 p2: 0x1007823630 p: 0x784b9a8, ss_ex[n]: 8589921888 p2: 0xfffffff0078646a8 So rptr points to an invalid memory. Question is whether a store/load from the address can happen?