diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/20011219-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20011219-1.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/20011219-1.c b/gcc/testsuite/gcc.c-torture/execute/20011219-1.c new file mode 100644 index 000000000..d6455ab50 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20011219-1.c @@ -0,0 +1,49 @@ +/* This testcase failed on IA-32 at -O and above, because combine attached + a REG_LABEL note to jump instruction already using JUMP_LABEL. */ + +extern void abort (void); +extern void exit (int); + +enum X { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q }; + +void +bar (const char *x, int y, const char *z) +{ +} + +long +foo (enum X x, const void *y) +{ + long a; + + switch (x) + { + case K: + a = *(long *)y; + break; + case L: + a = *(long *)y; + break; + case M: + a = *(long *)y; + break; + case N: + a = *(long *)y; + break; + case O: + a = *(long *)y; + break; + default: + bar ("foo", 1, "bar"); + } + return a; +} + +int +main () +{ + long i = 24; + if (foo (N, &i) != 24) + abort (); + exit (0); +} |