| /* PR tree-optimization/42587 */ |
| /* { dg-do compile } */ |
| /* { dg-require-effective-target bswap } */ |
| /* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-store-merging" } */ |
| /* { dg-additional-options "-march=z900" { target s390-*-* } } */ |
| |
| typedef unsigned char u8; |
| typedef unsigned int u32; |
| union __anonunion_out_195 |
| { |
| u32 value; |
| u8 bytes[4]; |
| }; |
| union __anonunion_in_196 |
| { |
| u32 value; |
| u8 bytes[4]; |
| }; |
| extern void acpi_ut_track_stack_ptr (void); |
| u32 acpi_ut_dword_byte_swap (u32 value); |
| u32 |
| acpi_ut_dword_byte_swap (u32 value) |
| { |
| union __anonunion_out_195 out; |
| union __anonunion_in_196 in; |
| |
| { |
| acpi_ut_track_stack_ptr (); |
| in.value = value; |
| out.bytes[0] = in.bytes[3]; |
| out.bytes[1] = in.bytes[2]; |
| out.bytes[2] = in.bytes[1]; |
| out.bytes[3] = in.bytes[0]; |
| return (out.value); |
| } |
| } |
| |
| /* { dg-final { scan-tree-dump "32 bit bswap implementation found at" "store-merging" } } */ |