[PR64164] drop copyrename, integrate into expand
Jeff Law
law@redhat.com
Fri Nov 13 06:33:00 GMT 2015
On 11/11/2015 11:10 AM, Alexandre Oliva wrote:
> On Nov 10, 2015, Jeff Law <law@redhat.com> wrote:
>
>>> * function.c (assign_parm_setup_block): Right-shift
>>> upward-padded big-endian args when bypassing the stack slot.
>> Don't you need to check the value of BLOCK_REG_PADDING at runtime?
>> The padding is essentially allowed to vary.
>
> Well, yeah, it's the result of BLOCK_REG_PADDING that tells whether
> upward-padding occurred and shifting is required.
>
>> If you look at the other places where BLOCK_REG_PADDING is used, it's
>> checked in a #ifdef, then again inside a if conditional.
>
> That's what I do in the patch too.
? I don't see the runtime check in your patch. I see a couple
gcc_asserts, but no runtime check of BLOCK_REG_PADDING.
>
> That said, the initial conditions in the if/else-if/else chain for the
> no-larger-than-a-word case cover all of the non-BLOCK_REG_PADDING cases
> correctly, so that, if BLOCK_REG_PADDING is not defined, we can just
> skip the !MEM_P block altogether. That's also the reason why we can go
> straight to shifting when we get there.
>
> I tried to document my reasoning in the comments, but maybe it was still
> too obscure?
Certainly seems that way. Is it your assertion that the new code is
what we want regardless of the *value* of REG_BLOCK_PADDING?
Essentially meaning the check in the IF is covering both cases?
What am I missing here?
Jeff
More information about the Gcc-patches
mailing list