On Mon, 27 Jun 2022, Jakub Jelinek wrote: > Hi! > > The test FAILs on 32-bit targets, because when unsigned long > is 32-bit, (unsigned long) -1 isn't 0xffffffffffffffff. > The options to fix this would be either using -1UL, or switch > to unsigned long long and using -1ULL, I chose the latter because > the test then FAILs in r13-1242 even on 32-bit targets. > And while at it, some deobfuscation and formatting tweaks. > > Tested on x86_64-linux with -m32/-m64 with a week old gcc (where it > FAILs now on both) and current gcc (where it succeeds), ok for trunk?
OK. Thanks, Richard. > 2022-06-27 Jakub Jelinek <ja...@redhat.com> > > PR tree-optimization/106070 > * gcc.dg/torture/pr106070.c: Use unsigned long long instead of > unsigned long and -1ULL instead of 0xffffffffffffffff, deobcuscate > and improve formatting. > > --- gcc/testsuite/gcc.dg/torture/pr106070.c.jj 2022-06-26 > 23:11:16.120254567 +0200 > +++ gcc/testsuite/gcc.dg/torture/pr106070.c 2022-06-27 11:30:02.475765731 > +0200 > @@ -1,20 +1,22 @@ > /* { dg-do run } */ > > -unsigned int var_2 = 1; > -int var_4 = -1; > -int var_10 = 4; > -unsigned long arr_252; > -void __attribute__((noipa)) test() { > - for (int a = 0; a < var_10; a += 2) > - arr_252 = var_2 != (int)var_4 ? (unsigned long)var_4 : (unsigned > long)var_2; > -} > +unsigned int a = 1; > +int b = -1; > +int c = 4; > +unsigned long long d; > > -void test(); > +void __attribute__((noipa)) > +test (void) > +{ > + for (int i = 0; i < c; i += 2) > + d = a != (int) b ? (unsigned long long) b : (unsigned long long) a; > +} > > -int main() > +int > +main () > { > - test(); > - if (arr_252 != 0xffffffffffffffff) > - __builtin_abort(); > + test (); > + if (d != -1ULL) > + __builtin_abort (); > return 0; > } > > Jakub > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstra