| /* { dg-do run } */ |
| /* { dg-options "-O2" } */ |
| |
| extern void abort (void); |
| |
| int __attribute__ ((noinline)) |
| test (unsigned int *a, int b) |
| { |
| return b ? 1 : __builtin_parity (*a); |
| } |
| |
| int __attribute__ ((noinline)) |
| testl (unsigned long *a, int b) |
| { |
| return b ? 1 : __builtin_parityl (*a); |
| } |
| |
| int __attribute__ ((noinline)) |
| testll (unsigned long long *a, int b) |
| { |
| return b ? 1 : __builtin_parityll (*a); |
| } |
| |
| int |
| main () |
| { |
| unsigned int a = 0; |
| unsigned long al; |
| unsigned long long all; |
| |
| a = 0x12345670; |
| if (test (&a, 0)) |
| abort (); |
| |
| al = 0x12345670ul; |
| if (testl (&al, 0)) |
| abort(); |
| |
| #if 1 |
| all = 0x12345678abcdef0ull; |
| if (testll (&all, 0)) |
| abort (); |
| #endif |
| return 0; |
| } |