On Tue, Sep 24, 2024 at 6:14 PM Andrew Pinski <quic_apin...@quicinc.com> wrote: > > While looking into improving phiprop, I noticed that > the current pr70740.c testcase was being optimized almost > all the way before phiprop because the addresses were considered > the same; the arrays were all zero in size. > > This adds an alternative testcase which changes the array sizes to be 1 > and phiprop can and will act on this testcase now and the fix which was > being tested is actually tested now. > > Tested on x86_64-linux-gnu.
OK > PR 70740 > > gcc/testsuite/ChangeLog: > > * gcc.dg/torture/pr70740-1.c: New test. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > gcc/testsuite/gcc.dg/torture/pr70740-1.c | 41 ++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > create mode 100644 gcc/testsuite/gcc.dg/torture/pr70740-1.c > > diff --git a/gcc/testsuite/gcc.dg/torture/pr70740-1.c > b/gcc/testsuite/gcc.dg/torture/pr70740-1.c > new file mode 100644 > index 00000000000..77e6a2d7187 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/torture/pr70740-1.c > @@ -0,0 +1,41 @@ > +/* { dg-do compile } */ > + > +/* This is an alternative to the original pr70740.c testcase, > + arrays are now 1 in size where they were 0 in the other testcase. */ > + > +extern int foo (void); > +extern void *memcpy (void *, const void *, __SIZE_TYPE__); > + > +struct > +{ > + char a[6]; > +} d; > +struct > +{ > + int a1[1]; > + int a2[1]; > + int a3[1]; > + int a4[1]; > +} a, c; > +int b; > + > +int * > +bar () > +{ > + if (b) > + return a.a4; > + return a.a2; > +} > + > +void > +baz () > +{ > + int *e, *f; > + if (foo ()) > + e = c.a3; > + else > + e = c.a1; > + memcpy (d.a, e, 6); > + f = bar (); > + memcpy (d.a, f, 1); > +} > -- > 2.43.0 >