Thursday, October 17, 2024 Richard Sandiford <richard.sandif...@arm.com> wrote:
>>>> For instance: >>>> float __attribute__((aligned (32))) large_aligned_array[3]; >>>> >>>> BIGGEST_ALIGNMENT could be up to 512 bits on x64. >>>> This patch has been added to cover this case without needing to >>>> change the FFmpeg code. >>> >>> What goes wrong if we don't do this? I'm not sure from the description >>> whether it's a correctness fix, a performance fix, or whether it's about >>> avoiding wasted space. >> >> It is a correctness fix. > > But you could you explain what goes wrong if you don't do this? > (I realise it might be very obvious when you've seen it happen :) > But I'm genuinely unsure.) It will generate an error if ASM_OUTPUT_ALIGNED_LOCAL is not declared. error: requested alignment for ‘large_aligned_array’ is greater than implemented alignment of 16 7 | float __attribute__((aligned (32))) large_aligned_array[3]; > Why do we ignore the alignment if it is less than BIGGEST_ALIGNMENT? If ASM_OUTPUT_ALIGNED_LOCAL uses an alignment less than BIGGEST_ALIGNMENT, it might trigger a relocation issue. relocation truncated to fit: IMAGE_REL_ARM64_PAGEOFFSET_12L > Better to use "auto" rather than "unsigned". It looks like "auto" cannot be used there. Regards, Evgeny