Fix 70083, lra-induced crash
Vladimir Makarov
vmakarov@redhat.com
Thu Mar 10 17:56:00 GMT 2016
On 03/10/2016 03:26 AM, Bernd Schmidt wrote:
> This crash happens because LRA tries to save an AVX hard reg in a
> large mode, and it only appears in the function in smaller modes.
> Stack alignment isn't set up to support the larger mode.
>
> Currently, biggest_mode for hard registers is set up from
> regno_reg_rtx, set up to a large mode for argument regs. That mode is
> not necessarily seen in the function itself and may be too large. If
> that initialization is changed to use VOIDmode, we compute the correct
> value during lra_push_insns, but then subsequently we clear it to
> VOIDmode again, and it never seems to get updated. Hence, the patch
> has several parts: initialize hard reg biggest_mode with VOIDmode,
> ensure it gets updated during process_bb_lives, and use the value in
> split_reg.
>
> Bootstrapped and tested on x86_64-linux, ok?
>
Yes. Thank you, Bernd.
More information about the Gcc-patches
mailing list