On Fri, 3 Jul 2026, Jakub Jelinek wrote:

> On Wed, Jul 01, 2026 at 09:47:46AM +0200, Eric Botcazou wrote:
> > this is a regression present on mainline, 16, 15 and 14 branches introduced 
> > by 
> > the fix for PR tree-optimization/112653 (PTA and return).  What happens is 
> > that DSE incorrectly eliminates a call to __builtin_memcpy, whose 
> > destination 
> > is obtained from (an equivalent of) malloc and is ultimately returned from 
> > the 
> > function.  But this happens only when the dynamic allocation is conditional.
> 
> For us Ada illiterate, here is a C++ testcase which got fixed by this too.
> 
> Ok for trunk and perhaps release branches too?

OK.

> 2026-07-03  Jakub Jelinek  <[email protected]>
> 
>       * g++.dg/opt/20260703-1.C: New test.
> 
> --- gcc/testsuite/g++.dg/opt/20260703-1.C.jj  2026-07-03 17:01:03.845156091 
> +0200
> +++ gcc/testsuite/g++.dg/opt/20260703-1.C     2026-07-03 17:00:48.744347853 
> +0200
> @@ -0,0 +1,46 @@
> +// This started to be miscompiled with r15-579 or in a larger
> +// test with r15-3956 and got fixed with r17-2039.
> +// DSE would optimize away the store of 42.
> +// { dg-do run { target c++11 } }
> +// { dg-options "-O2" }
> +
> +struct B { };
> +
> +void *volatile g;
> +
> +template <typename T>
> +struct D { T foo (void) const { return (T) g; } };
> +
> +struct G : public B
> +{
> +  virtual B *bar (int);
> +  struct H : public B { H () : h (42) {} int h; };
> +  struct I : public B {};
> +  D <I *> g;
> +};
> +
> +struct H : public G { virtual B *bar (int) { return nullptr; } };
> +
> +B *
> +G::bar (int x)
> +{
> +  if (x == 0)
> +    return new H ();
> +  I *y = g.foo ();
> +  return y;
> +}
> +
> +[[gnu::noipa]] B *
> +baz (G *x, int y)
> +{
> +  return x->bar (y);
> +}
> +
> +int
> +main ()
> +{
> +  G g;
> +  G::H *h = (G::H *) baz (&g, 0);
> +  if (h->h != 42)
> +    __builtin_abort ();
> +}
> 
> 
>       Jakub
> 
> 

-- 
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Jochen Jaser, Andrew McDonald; (HRB 36809, AG Nuernberg)

Reply via email to