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

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
I've got it:

              /* We support up to 512-bit values (for V8DFmode).  */
              unsigned char buffer[64];
              int len;

              while (!partial_defs.is_empty ())
                {
                  pd_data pd = partial_defs.pop ();
                  if (TREE_CODE (pd.rhs) == CONSTRUCTOR)
+      {
+        size_t x = MIN ((HOST_WIDE_INT)sizeof (buffer), pd.size);
+        size_t offset =  MAX (0, pd.offset);
+        fprintf (stderr, "memset: %ld, offset: %ld\n", x, offset);
                    /* Empty CONSTRUCTOR.  */
                    memset (buffer + MAX (0, pd.offset),
-                           0, MIN ((HOST_WIDE_INT)sizeof (buffer), pd.size));
+                           0, x);
+      }


$ ./gcc/xgcc -Bgcc /tmp/ice.ii -c -O3
memset: 64, offset: 8
during GIMPLE pass: fre
...

So a nice example of stack corruption. Richi can you please prepare a patch for
it?

Reply via email to