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.