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

Reply via email to