[Bug middle-end/84877] Local stack copy of BLKmode parameter on the stack is not aligned when the requested alignment exceeds MAX_SUPPORTED_STACK_ALIGNMENT
dave.anglin at bell dot net
gcc-bugzilla@gcc.gnu.org
Mon Jul 8 11:34:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84877
--- Comment #19 from dave.anglin at bell dot net ---
On 2019-07-07 8:39 p.m., amylaar at gcc dot gnu.org wrote:
> It seems suspicious that PREFERRED_STACK_BOUNDARY is smaller for TARGET_64BIT ?
That's the way HP defined things. The preferred stack boundary for 32-bit code
was
larger than it needed to be. Possibly, someone thought that making it cache
aligned
would be good.
>
> Be this as it may, the problem for the 84877 testcase is not that the stack has
> insufficient alignment, but that the stack slot doesn't have an aligned offset.
>
> The alignment gets pruned in function.c:get_stack_local_alignment :
>
> if (mode == BLKmode)
> alignment = BIGGEST_ALIGNMENT;
>
> I have attached a patch to preserve the alignment of the passed type for the
> case that the stack is already sufficiently aligned.
>
> To test the case where the stack is insufficiently aligned, for hppa we should
> use a different testcase with > 512 bit alignment of the type.
More information about the Gcc-bugs
mailing list