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

--- Comment #15 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Uros Bizjak <[email protected]>:

https://gcc.gnu.org/g:d9b785ab9255fe16ee6d9e93034704112735cfb6

commit r16-5487-gd9b785ab9255fe16ee6d9e93034704112735cfb6
Author: LIU Hao <[email protected]>
Date:   Tue Oct 14 14:46:46 2025 +0800

    libgcc: Pass x87 control word in the correct type

    The x87 control word should be passed as an `unsigned short`. Previous
    code passed `unsigned int`, and when building with `-masm=intel`,

       __asm__ __volatile__ ("fnstcw\t%0" : "=m" (_cw));

    could expand to `fnstcw DWORD PTR [esp+48]` and cause errors like

       {standard input}: Assembler messages:
       {standard input}:7137: Error: operand size mismatch for `fnstcw'

    libgcc/ChangeLog:

            PR target/122275
            * config/i386/32/dfp-machine.h (DFP_GET_ROUNDMODE): Change
`_frnd_orig` to
            `unsigned short` for x87 control word.
            (DFP_SET_ROUNDMODE): Manipulate the x87 control word as `unsigned
short`,
            and manipulate the MXCSR as `unsigned int`.

    Signed-off-by: LIU Hao <[email protected]>

Reply via email to