1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */
3 /* { dg-additional-options "-O3 -mcpu=power6" } */
7 NO_REGS
, AP_REG
, XRF_REGS
, GENERAL_REGS
, AGRF_REGS
, XGRF_REGS
, ALL_REGS
,
12 VOIDmode
, QImode
, HImode
, PSImode
, SImode
, PDImode
, DImode
, TImode
, OImode
,
13 QFmode
, HFmode
, TQFmode
, SFmode
, DFmode
, XFmode
, TFmode
, SCmode
, DCmode
,
14 XCmode
, TCmode
, CQImode
, CHImode
, CSImode
, CDImode
, CTImode
, COImode
,
15 BLKmode
, CCmode
, CCEVENmode
, MAX_MACHINE_MODE
17 typedef struct rtx_def
22 extern rtx
*regno_reg_rtx
;
23 typedef unsigned int HARD_REG_ELT_TYPE
;
24 typedef HARD_REG_ELT_TYPE HARD_REG_SET
[((64 + 32 - 1) / 32)];
25 extern int reg_alloc_order
[64];
27 extern int *reg_n_calls_crossed
;
28 extern short *reg_renumber
;
29 static int *reg_where_dead
;
30 static int *reg_where_born
;
31 static int *reg_order
;
32 static char *regs_change_size
;
33 static HARD_REG_SET
*after_insn_hard_regs
;
34 static int stupid_find_reg (int, enum reg_class
, enum machine_mode
, int, int,
36 enum reg_class
reg_preferred_class (int);
38 stupid_life_analysis (f
, nregs
, file
)
43 for (i
= (((64)) + 3) + 1; i
< max_regno
; i
++)
45 register int r
= reg_order
[i
];
46 if ((int) LIM_REG_CLASSES
> 1)
48 stupid_find_reg (reg_n_calls_crossed
[r
], reg_preferred_class (r
),
49 ((regno_reg_rtx
[r
])->mode
), reg_where_born
[r
],
50 reg_where_dead
[r
], regs_change_size
[r
]);
55 stupid_find_reg (call_preserved
, class, mode
, born_insn
, dead_insn
,
57 int call_preserved
, born_insn
, dead_insn
, changes_size
;
59 enum machine_mode mode
;
62 HARD_REG_SET used
, this_reg
;
63 for (ins
= born_insn
; ins
< dead_insn
; ins
++)
66 register HARD_REG_ELT_TYPE
*scan_tp_
= (used
), *scan_fp_
=
67 (after_insn_hard_regs
[ins
]);
68 for (i
= 0; i
< ((64 + 32 - 1) / 32); i
++)
69 *scan_tp_
++ |= *scan_fp_
++;
72 for (i
= 0; i
< 64; i
++)
74 int regno
= reg_alloc_order
[i
];
75 if (((used
)[(regno
) / ((unsigned) 32)] &
76 (((HARD_REG_ELT_TYPE
) (1)) << ((regno
) % ((unsigned) 32)))))