| /* { dg-do compile } */ |
| |
| extern int baz (); |
| extern void bar (void); |
| extern void noret (void) __attribute__ ((__noreturn__)); |
| |
| void |
| fix_register (const char *name, int fixed, int call_used, int nregs) |
| { |
| int i; |
| int reg; |
| |
| if ((reg = baz ()) >= 0) |
| { |
| for (i = reg; i < nregs; i++) |
| { |
| if ((i == 15 || i == 11) && (fixed == 0 || call_used == 0)) |
| { |
| switch (fixed) |
| { |
| case 0: |
| switch (call_used) |
| { |
| case 1: |
| bar (); |
| break; |
| default: |
| (noret ()); |
| } |
| case 1: |
| switch (call_used) |
| { |
| case 1: |
| break; |
| case 0: |
| default: |
| (noret ()); |
| } |
| break; |
| default: |
| (noret ()); |
| } |
| } |
| } |
| } |
| } |