111
|
1 /* { dg-do compile } */
|
|
2
|
|
3 extern int baz ();
|
|
4 extern void bar (void);
|
|
5 extern void noret (void) __attribute__ ((__noreturn__));
|
|
6
|
|
7 void
|
|
8 fix_register (const char *name, int fixed, int call_used, int nregs)
|
|
9 {
|
|
10 int i;
|
|
11 int reg;
|
|
12
|
|
13 if ((reg = baz ()) >= 0)
|
|
14 {
|
|
15 for (i = reg; i < nregs; i++)
|
|
16 {
|
|
17 if ((i == 15 || i == 11) && (fixed == 0 || call_used == 0))
|
|
18 {
|
|
19 switch (fixed)
|
|
20 {
|
|
21 case 0:
|
|
22 switch (call_used)
|
|
23 {
|
|
24 case 1:
|
|
25 bar ();
|
|
26 break;
|
|
27 default:
|
|
28 (noret ());
|
|
29 }
|
|
30 case 1:
|
|
31 switch (call_used)
|
|
32 {
|
|
33 case 1:
|
|
34 break;
|
|
35 case 0:
|
|
36 default:
|
|
37 (noret ());
|
|
38 }
|
|
39 break;
|
|
40 default:
|
|
41 (noret ());
|
|
42 }
|
|
43 }
|
|
44 }
|
|
45 }
|
|
46 }
|