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