This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Account for prologue spills in reg_pressure scheduling
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: Maxim Kuvyrkov <maxim dot kuvyrkov at linaro dot org>
- Cc: Vladimir Makarov <vmakarov at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Sebastian Pop <sebpop at gmail dot com>
- Date: Wed, 22 Oct 2014 13:51:07 +0100
- Subject: Re: [PATCH] Account for prologue spills in reg_pressure scheduling
- Authentication-results: sourceware.org; auth=none
- References: <FE7CEF4D-A27B-46D0-96B3-3569C1558DF9 at linaro dot org> <54467AC2 dot 6040801 at redhat dot com> <2F0212D5-C20E-4794-89DC-859A24D7D4AD at linaro dot org>
Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> writes:
> + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
> + if (call_used_regs[i])
> + for (c = 0; c < ira_pressure_classes_num; ++c)
> + {
> + int j;
> + enum reg_class cl = ira_pressure_classes[c];
> +
> + for (j = 0; j < ira_class_hard_regs_num[cl]; ++j)
> + if (ira_class_hard_regs[cl][j] == i)
> + {
> + /* Register I belongs to pressure class CL. Pressure
> + classes do not intersect, so don't look further. */
> + ++call_used_regs_num[cl];
> + break;
> + }
> + }
It'd be easier to iterate over the classes as the outer loop:
for (int c = 0; c < ira_pressure_classes_num; ++c)
{
enum reg_class cl = ira_pressure_classes[c];
for (int i = 0; i < ira_class_hard_regs_num[cl]; ++i)
if (call_used_regs[ira_class_hard_regs[cl][i]])
...
Thanks,
Richard