On Tue, Dec 10, 2019 at 11:02:39AM +0100, Andreas Schwab wrote: > On Dez 10 2019, Jakub Jelinek wrote: > > > --- gcc/testsuite/gcc.target/i386/pr92841.c.jj 2019-12-09 > > 19:38:29.572759215 +0100 > > +++ gcc/testsuite/gcc.target/i386/pr92841.c 2019-12-09 19:40:59.642492417 > > +0100 > > @@ -0,0 +1,17 @@ > > +/* PR target/92841 */ > > +/* { dg-do compile { target fstack_protector } } */ > > +/* { dg-options "-O2 -fstack-protector-strong -masm=att" } */ > > +/* { dg-final { scan-assembler-not "xor\[lq]\t%(\[re]\[a-z0-9]*), > > %\\1\[\n\r]*\tmov\[lq]\t\[^\n\r]*, %\\1" } } */ > > + > > +const struct S { int b; } c[] = {30, 12, 20, 0, 11}; > > +void bar (int *); > > + > > +void > > +foo (void) > > +{ > > + int e[4]; > > + const struct S *a; > > + for (a = c; a < c + sizeof (c); a++) > > + if (a->b) > > This accesses c beyond bounds. Does that invalidate the test?
Thanks for noticing, changed into for (a = c; a < c + sizeof (c) / sizeof (c[0]); a++) in my copy, the testcase still FAILs before the patch and PASSes with it. Jakub