diff --git a/gcc/testsuite/gcc.dg/fold-bswap-1.c b/gcc/testsuite/gcc.dg/fold-bswap-1.c new file mode 100644 index 0000000..f14f731 --- /dev/null +++ b/gcc/testsuite/gcc.dg/fold-bswap-1.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +unsigned int swap32(unsigned int x) +{ + unsigned int a = __builtin_bswap16(x); + x >>= 16; + a <<= 16; + return __builtin_bswap16(x) | a; +} + +unsigned long swap64(unsigned long x) +{ + unsigned long a = __builtin_bswap32(x); + x >>= 32; + a <<= 32; + return __builtin_bswap32(x) | a; +} + +/* { dg-final { scan-tree-dump-times "__builtin_bswap32" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times "__builtin_bswap64" 1 "optimized" } } */ +