On 11/26/14 15:00, Andrew Pinski wrote:
Hi,
The problem here is lra_substitute_pseudo calls gen_rtx_SUBREG with
a VOIDmode (const_int) argument but really it should not be calling
gen_rtx_SUBREG directly instead it should be using
gen_lowpart_if_possible. This patch fixes that and adds a testcase
that had happened on x86_64.
OK? I bootstrapped and tested this on both aarch64-linux-gnu and
x86_64-linux-gnu with no regression on either.
Thanks,
Andrew Pinski
ChangeLog:
* lra.c (lra_substitute_pseudo): Use gen_lowpart_if_possible
instead of gen_rtx_SUBREG/gen_lowpart_SUBREG.
Does gen_lowpart_if_possible handle paradoxical subregs which appear to
be what Vlad's trying to handle in the true arm of the code you're changing.
What happens if gen_lowpart_if_possible returns NULL? Worth an assert?
jeff