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.
2022-06-27 Jakub Jelinek <jakub@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.
/* { 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;
}