diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc index b22132de6ab79837ecffecf48b34f3848610a2a7..0725d15c8ed0d671a45ff239c4b66fc886ee7281 100644 --- a/gcc/config/gcn/gcn.cc +++ b/gcc/config/gcn/gcn.cc @@ -2493,6 +2493,13 @@ gcn_secondary_reload (bool in_p, rtx x, reg_class_t rclass, static void gcn_conditional_register_usage (void) { + /* Some architectures have a register allocation granularity that does not + permit use of the full register count. */ + for (int i = 256 - (256 % TARGET_VGPR_GRANULARITY); + i < 256; + i++) + fixed_regs[VGPR_REGNO (i)] = call_used_regs[VGPR_REGNO (i)] = 1; + if (!cfun || !cfun->machine) return;