https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118892
Tamar Christina <tnfchris at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |tnfchris at gcc dot
gnu.org
Status|NEW |ASSIGNED
--- Comment #7 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #6)
> This seems like it fixes it:
> ```
> [apinski@xeond2 gcc]$ git diff
> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
> index 071058dbeb3..2a314997f88 100644
> --- a/gcc/config/aarch64/aarch64.md
> +++ b/gcc/config/aarch64/aarch64.md
> @@ -7476,7 +7476,7 @@ (define_expand "copysign<GPF:mode>3"
> {
> emit_insn (gen_ior<vq_int_equiv>3 (
> lowpart_subreg (<VQ_INT_EQUIV>mode, operands[0], <MODE>mode),
> - lowpart_subreg (<VQ_INT_EQUIV>mode, operands[1], <MODE>mode),
> + force_lowpart_subreg (<VQ_INT_EQUIV>mode, operands[1], <MODE>mode),
> v_bitmask));
> DONE;
> }
>
> ```
>
> Which means it was caused by r14-5289-ged2e058c58ab06
But operand1 is marked as `register_operand` which means whatever did the
expansion didn't honor the predicate. i.e. the input wasn't legitimized..
But mine.