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

--- Comment #6 from GCC 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:4203060a73e65e4fa3e091b060a973c3296b84e9

commit r15-9345-g4203060a73e65e4fa3e091b060a973c3296b84e9
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Apr 9 22:00:35 2025 +0200

    h8300: Fix up bit test and jump splitter [PR119664]

    r12-2601 has added this define_insn_and_split and corresponding
    (define_insn ""
      [(set (reg:CCZ CC_REG)
            (eq (zero_extract:HSI (match_operand:HSI 0 "register_operand" "r")
                                  (const_int 1)
                                  (match_operand 1 "const_int_operand" "n"))
                (const_int 0)))]
      "INTVAL (operands[1]) < 16"
      "btst %Z1,%Y0"
      [(set_attr "length" "2")])
    pattern into which the define_insn_and_split wants to splut in addition
    to a conditional jump.
    But as can be seen, the btst define_insn uses HSI mode iterator while
    define_insn_and_split QHSI, so for QImode it splits into something that
    can't be recognized.

    This was probably latent since r12-2601 and on the attached testcase
    is reproduceable starting with r15-1945 - a late combiner change.

    2025-04-09  Jakub Jelinek  <ja...@redhat.com>

            PR target/119664
            * config/h8300/jumpcall.md (bit test and jump
define_insn_and_split):
            Use HSI iterator rather than QHSI.

            * gcc.dg/pr119664.c: New test.

Reply via email to