1 extern void abort (void);
3 typedef unsigned long HARD_REG_SET
[2];
4 HARD_REG_SET reg_class_contents
[2];
8 struct du_chain
*next_use
;
12 void __attribute__((noinline
))
13 merge_overlapping_regs (HARD_REG_SET
*p
)
15 if ((*p
)[0] != -1 || (*p
)[1] != -1)
19 void __attribute__((noinline
))
20 regrename_optimize (struct du_chain
*this)
22 HARD_REG_SET this_unavailable
;
23 unsigned long *scan_fp_
;
25 struct du_chain
*last
;
27 this_unavailable
[0] = 0;
28 this_unavailable
[1] = 0;
31 for (last
= this; last
->next_use
; last
= last
->next_use
)
33 scan_fp_
= reg_class_contents
[last
->cl
];
35 this_unavailable
[0] |= ~ scan_fp_
[0];
36 this_unavailable
[1] |= ~ scan_fp_
[1];
41 scan_fp_
= reg_class_contents
[last
->cl
];
42 this_unavailable
[0] |= ~ scan_fp_
[0];
43 this_unavailable
[1] |= ~ scan_fp_
[1];
45 merge_overlapping_regs (&this_unavailable
);
50 struct du_chain du1
= { 0, 0 };
51 struct du_chain du0
= { &du1
, 1 };
52 reg_class_contents
[0][0] = -1;
53 reg_class_contents
[0][1] = -1;
54 reg_class_contents
[1][0] = 0;
55 reg_class_contents
[1][1] = 0;
56 regrename_optimize (&du0
);