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

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Faust <dfa...@gcc.gnu.org>:

https://gcc.gnu.org/g:489e1adf7792985b21195c740da7370f96b19640

commit r14-3227-g489e1adf7792985b21195c740da7370f96b19640
Author: David Faust <david.fa...@oracle.com>
Date:   Tue Aug 15 10:54:17 2023 -0700

    bpf: fix pseudoc w regs for small modes [PR111029]

    In the BPF pseudo-c assembly dialect, registers treated as 32-bits
    rather than the full 64 in various instructions ought to be printed as
    "wN" rather than "rN".  But bpf_print_register () was only doing this
    for specifically SImode registers, meaning smaller modes were printed
    incorrectly.

    This caused assembler errors like:

      Error: unrecognized instruction `w2 =(s8)r1'

    for a 32-bit sign-extending register move instruction, where the source
    register is used in QImode.

    Fix bpf_print_register () to print the "w" version of register when
    specified by the template for any mode 32-bits or smaller.

            PR target/111029

    gcc/
            * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
            for any mode 32-bits or smaller, not just SImode.

    gcc/testsuite/

            * gcc.target/bpf/smov-2.c: New test.
            * gcc.target/bpf/smov-pseudoc-2.c: New test.

Reply via email to