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

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:51e010b5f75c1fff06425a72702c1bf82a3ab053

commit r10-6104-g51e010b5f75c1fff06425a72702c1bf82a3ab053
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Jan 21 09:17:27 2020 +0100

    powerpc: Fix ICE with fp conditional move (PR target/93073)

    The following testcase ICEs, because for TFmode the particular subtraction
    pattern (*subtf3) is not enabled with the given options.  Using
    expand_simple_binop instead of emitting the subtraction by hand just moves
    the ICE one insn later, NEG of ABS is not then recognized, etc., but
    ultimately the problem is that when rs6000_emit_cmove is called for
floating
    point operand mode (and earlier condition ensures that in that case
    compare_mode is also floating point), the expander makes sure the
    operand mode is SFDF, but for the comparison mode nothing checks it, yet
    there is just one *fsel* pattern with 2 separate SFDF iterators.

    The following patch fixes it by giving up if compare_mode is not SFmode or
    DFmode.

    2020-01-21  Jakub Jelinek  <ja...@redhat.com>

        PR target/93073
        * config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
        compare_mode other than SFmode or DFmode.

        * gcc.target/powerpc/pr93073.c: New test.

Reply via email to