https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123285
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The only code which I am still questioning is:
// Record conflicts due to partially call-clobbered registers.
// (Full clobbers are handled by the previous loop.)
for (unsigned int abi_id = 0; abi_id < NUM_ABI_IDS; ++abi_id)
if (call_in_range_p (abi_id, allocno1->start_point,
allocno1->end_point))
{
auto fprs = partial_fpr_clobbers (abi_id, group1->fpr_size);
group1->fpr_candidates &= ~fprs >> allocno1->offset;
}
Specifically the allocno1->offset part which I think is wrong too.