| /* { dg-do run { target i?86-*-* x86_64-*-* } } */ |
| /* { dg-require-effective-target ilp32 } */ |
| /* { dg-options "-march=i386 -O3 -fomit-frame-pointer" } */ |
| |
| /* For this test case, we used to do an invalid load motion after |
| reload, because we missed autoincrements of the stack pointer. */ |
| |
| extern void abort (void); |
| |
| static int j; |
| |
| static void __attribute__((noinline)) |
| f1 (int a, int b, int c, int d, int e) |
| { |
| j = a; |
| } |
| |
| int __attribute__((noinline)) |
| f2 (int a, int b, int c, int d, int e) |
| { |
| if ((b & 0x1111) != 1) |
| f1 (a, b, c, d, e); |
| return 0; |
| } |
| |
| int |
| main (void) |
| { |
| f2 (123, 0, 0, 0, 0); |
| if (j != 123) |
| abort (); |
| return 0; |
| } |
| |