| /* { dg-do run } */ |
| /* { dg-additional-options "-fgcse-after-reload" } */ |
| |
| int a, b, c, d, e; |
| |
| static __attribute__ ((__noipa__)) |
| int foo (int i) |
| { |
| #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ |
| __builtin_memmove (&i, &e, 1); |
| #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ |
| __builtin_memmove ((char *) &i + sizeof (i) - 1, |
| (char *) &e + sizeof (e) - 1, 1); |
| #elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__ |
| __builtin_memmove ((char *) &i + sizeof (i) - 2, |
| (char *) &e + sizeof (e) - 2, 1); |
| #else |
| #error "endian unknown?" |
| #endif |
| if (a > 0) |
| i /= e; |
| e /= 5; |
| b = 0; |
| return i + c + d + 5; |
| } |
| |
| int |
| main (void) |
| { |
| int x = foo (4); |
| if (x != 5) |
| __builtin_abort (); |
| return 0; |
| } |