This is the mail archive of the
mailing list for the GCC project.
Re: [00/32] Support multiple ABIs in the same translation unit
- From: Dimitar Dimitrov <dimitar at dinux dot eu>
- To: gcc-patches at gcc dot gnu dot org, richard dot sandiford at arm dot com
- Date: Thu, 26 Sep 2019 22:24:31 +0300
- Subject: Re: [00/32] Support multiple ABIs in the same translation unit
- References: <firstname.lastname@example.org>
On Wed, 11 Sep 2019, 22:02:26 EEST Richard Sandiford wrote:
> The reason for the PRU differences is that the port defines
> targetm.hard_regno_call_part_clobbered, but uses it to test whether
> a multi-register value contains a mixture of fully-clobbered and
> fully-preserved registers. AFAICT the port doesn't actually have
> individual registers that are partly clobbered, so it doesn't need
> to define the hook. (I can see how the documentation gave a misleading
> impression though. I've tried to improve it in one of the patches.)
> The series moves away from testing hard_regno_call_part_clobbered
> directly to testing cached information instead, and the way that the
> cached information is calculated means that defining the hook the way
> the PRU port does has no effect. In other words, after the series we
> treat it (rightly IMO) as having a "normal" ABI whereas before we didn't.
You are correct. Port does not have partially clobbered HW registers. And
indeed I was worried about multi-register values.
PRU testsuite showed no regression from trunk with your patch set.
With your patch set, I tried to compare PRU assembly with and without defining
the targetm.hard_regno_call_part_clobbered hook. There was much noise in
compare-all-tests due to lto compiler ID strings, but after some filtering I
think the output assembly was the same.