Dimitar Dimitrov <dimi...@dinux.eu> writes: > This test fails on AVR. > > Debugging the test on x86 host, I noticed that u in function s sometimes > has value 16128. The "t <= 3 * u" expression in the same function > results in signed integer overflow for targets with sizeof(int)=16. > > Fix by requiring int32 effective target.
Ah, thanks, I should've clocked that, especially because I'd played with the values quite a bit. > > Also add return statement for the main function. > > gcc/testsuite/ChangeLog: > > * gcc.dg/torture/pr117546.c: Require effective target int32. > (main): Add return statement. > > Ok for trunk? > > Cc: Sam James <s...@gentoo.org> > Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu> > --- I think it can go in as obvious. Thanks for the fixup. > gcc/testsuite/gcc.dg/torture/pr117546.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/gcc/testsuite/gcc.dg/torture/pr117546.c > b/gcc/testsuite/gcc.dg/torture/pr117546.c > index 21e2aef18b9..b60f877a906 100644 > --- a/gcc/testsuite/gcc.dg/torture/pr117546.c > +++ b/gcc/testsuite/gcc.dg/torture/pr117546.c > @@ -1,4 +1,4 @@ > -/* { dg-do run } */ > +/* { dg-do run { target int32 } } */ > > typedef struct { > int a; > @@ -81,4 +81,6 @@ int main() { > l.glyf.coords[4] = (e){2, 206}; > l.glyf.coords[6] = (e){0, 308, 5}; > w(&l); > + > + return 0; > }