On Fri, 8 Feb 2019 at 12:40, Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Fri, Feb 08, 2019 at 11:29:10AM +0000, Matthew Malcomson wrote:
> > I'm pretty sure there's no difference between the iwmmxt target and
> > others so believe your simpler fix of just using 'q' is a good idea.
> > (there's no difference in gas and no documentation I have found mentions
> > a difference).
>
> The simpler patch would be then (but of course in that case the question is
> why iwmmxt.md doesn't use those q constraints for the output_move_double
> alternatives).
>
> 2019-02-08  Jakub Jelinek  <ja...@redhat.com>
>
>         PR bootstrap/88714
>         * config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use q constraint
>         instead of r.
>

Both this simple patch or the previous fix all the ICEs I reported, thanks.

Of course, the scan-assembler failures remain to be fixed.

> --- gcc/config/arm/ldrdstrd.md.jj       2019-02-08 11:25:42.368916124 +0100
> +++ gcc/config/arm/ldrdstrd.md  2019-02-08 12:38:33.647585108 +0100
> @@ -157,9 +157,9 @@ (define_peephole2 ; swap the destination
>  ;; We use gen_operands_ldrd_strd() with a modify argument as false so that 
> the
>  ;; operands are not changed.
>  (define_insn "*arm_ldrd"
> -  [(parallel [(set (match_operand:SI 0 "s_register_operand" "=r")
> +  [(parallel [(set (match_operand:SI 0 "s_register_operand" "=q")
>                    (match_operand:SI 2 "memory_operand" "m"))
> -             (set (match_operand:SI 1 "s_register_operand" "=r")
> +             (set (match_operand:SI 1 "s_register_operand" "=q")
>                    (match_operand:SI 3 "memory_operand" "m"))])]
>    "TARGET_LDRD && TARGET_ARM && reload_completed
>    && valid_operands_ldrd_strd (operands, true)"
> @@ -178,9 +178,9 @@ (define_insn "*arm_ldrd"
>
>  (define_insn "*arm_strd"
>    [(parallel [(set (match_operand:SI 2 "memory_operand" "=m")
> -                  (match_operand:SI 0 "s_register_operand" "r"))
> +                  (match_operand:SI 0 "s_register_operand" "q"))
>               (set (match_operand:SI 3 "memory_operand" "=m")
> -                  (match_operand:SI 1 "s_register_operand" "r"))])]
> +                  (match_operand:SI 1 "s_register_operand" "q"))])]
>    "TARGET_LDRD && TARGET_ARM && reload_completed
>    && valid_operands_ldrd_strd (operands, false)"
>    {
>
>
>         Jakub

Reply via email to