On Thu, Feb 26, 2026 at 1:40 AM H.J. Lu <[email protected]> wrote:
>
> TARGET_PROMOTE_PROTOTYPES is an optimization, not an ABI requirement.
> TARGET_PROMOTE_FUNCTION_MODE should be used for ABI requirement.  Like
> xtensa, mcore ABI requires sign extension of signed 8/16-bit integer
> arguments to 32 bits and zero extension of unsigned integer 8/16-bit
> arguments to 32 bits:
>
> 1. Rename xtensa_promote_function_mode to
> default_promote_function_mode_sign_extend to sign-extend signed 8/16-bit
> integer arguments to 32 bits and zero-extend of unsigned 8/16-bit
> integer arguments to 32 bits.
> 2. Replace xtensa_promote_function_mode with
> default_promote_function_mode_sign_extend.
> 3. Remove TARGET_PROMOTE_PROTOTYPES for mcore and define
> TARGET_PROMOTE_FUNCTION_MODE with
> default_promote_function_mode_sign_extend to properly extend 8/16-bit
> arguments to 32 bits.
>
> Targets with the same ABI requirement should define
> TARGET_PROMOTE_FUNCTION_MODE with
> default_promote_function_mode_sign_extend.

OK.

Thanks,
Richard.

> gcc/
>
> PR target/119979
> PR target/120888
> * targhooks.cc (default_promote_function_mode_sign_extend): New.
> * targhooks.h (default_promote_function_mode_sign_extend):
> Likewise.
> * config/mcore/mcore.cc (TARGET_PROMOTE_FUNCTION_MODE): Use
> default_promote_function_mode_sign_extend.
> (TARGET_PROMOTE_PROTOTYPES): Removed.
> * config/xtensa/xtensa.cc (xtensa_promote_function_mode): Removed.
> (TARGET_PROMOTE_FUNCTION_MODE): Use
> default_promote_function_mode_sign_extend.
>
> gcc/testsuite/
>
> PR target/119979
> PR target/120888
> * gcc.target/xtensa/pr120888-1.c: Removed to ...
> * gcc.dg/zero-extend.c: This.  Enable for mcore and xtensa.
> * gcc.target/xtensa/pr120888-2.c: Removed to ...
> * gcc.dg/sign-extend.c: This.  Enable for mcore and xtensa.
>
>
> --
> H.J.

Reply via email to