https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92090

--- Comment #11 from Peter Bergner <bergner at gcc dot gnu.org> ---
(In reply to Xiong Hu XS Luo from comment #10)
> This could fix the ICE, but I am not sure whether it is reasonable:
> 
> diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c
> index 0db6d3151cd..325904ac473 100644
> --- a/gcc/lra-constraints.c
> +++ b/gcc/lra-constraints.c
> @@ -3886,7 +3886,9 @@ curr_insn_transform (bool check_only_p)
>         subst = get_equiv_with_elimination (old, curr_insn);
>         original_subreg_reg_mode[i] = VOIDmode;
>         equiv_substition_p[i] = false;
> -       if (subst != old)
> +       if (subst != old
> +           && !(GET_MODE (old) == E_PTImode && GET_CODE (old) == REG
> +                && GET_CODE (subst) == CONST_WIDE_INT))
>           {
>             equiv_substition_p[i] = true;
>             subst = copy_rtx (subst);

Is there a reason we shouldn't allow loading a constant into a PTImode pseudo?
I've been working on allowing in the rs6000 patterns.

Reply via email to