/* { dg-do run } */ | |
/* { dg-require-effective-target popcountl } */ | |
/* { dg-options "-O2 -fno-tree-ch -fdump-tree-optimized" } */ | |
int | |
__attribute__ ((noinline, noclone)) | |
foo (long b) | |
{ | |
int c = 0; | |
while (b) { | |
b &= b - 1; | |
c++; | |
} | |
return c; | |
} | |
int main() | |
{ | |
if (foo (7) != 3) | |
__builtin_abort (); | |
if (foo (0) != 0) | |
__builtin_abort (); | |
if (foo (0xff) != 8) | |
__builtin_abort (); | |
return 0; | |
} | |
/* { dg-final { scan-tree-dump-times "__builtin_popcount" 1 "optimized" } } */ |