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?

Reply via email to