https://gcc.gnu.org/g:96da9d464a3c882b393a74d46c6075c80210d7c6
commit 96da9d464a3c882b393a74d46c6075c80210d7c6 Author: Michael Meissner <[email protected]> Date: Fri Oct 17 23:33:12 2025 -0400 Do not issue psabi warning for 16-bit floating point library calls. 2025-10-17 Michael Meissner <[email protected]> gcc/ * config/rs6000/rs6000-call.c (init_cumulative_args): Do not issue the psabi warning for passing and returning 16-bit floating point calls on library functions. (rs6000_function_arg): Likewise. Diff: --- gcc/config/rs6000/rs6000-call.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gcc/config/rs6000/rs6000-call.cc b/gcc/config/rs6000/rs6000-call.cc index 208a5d9a5e10..db2b6713280f 100644 --- a/gcc/config/rs6000/rs6000-call.cc +++ b/gcc/config/rs6000/rs6000-call.cc @@ -64,6 +64,7 @@ #include "ppc-auxv.h" #include "targhooks.h" #include "opts.h" +#include "print-tree.h" #include "rs6000-internal.h" @@ -691,7 +692,7 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, future. The issue is currently 16-bit floating point is returned in floating point register #1 in 16-bit format. We may or may not want to return it as a scalar 64-bit value. */ - if (fntype && warn_psabi) + if (fntype && warn_psabi && !cum->libcall) { machine_mode ret_mode = TYPE_MODE (TREE_TYPE (fntype)); if (ret_mode == BFmode || ret_mode == HFmode) @@ -1659,9 +1660,9 @@ rs6000_function_arg (cumulative_args_t cum_v, const function_arg_info &arg) future. The issue is currently 16-bit floating point values are passed in floating point registers in the native 16-bit format. We may or may not want to pass the value it as a scalar 64-bit value. */ - if (warn_psabi && (mode == BFmode || mode == HFmode)) - warning (OPT_Wpsabi, "%s might be passed differently in the future", - mode == BFmode ? "__bfloat16" : "_Float16"); + if (warn_psabi && !cum->libcall && (mode == BFmode || mode == HFmode)) + warning (OPT_Wpsabi, "%s might be passed differently in the future", + mode == BFmode ? "__bfloat16" : "_Float16"); /* Return a marker to indicate whether CR1 needs to set or clear the bit that V.4 uses to say fp args were passed in registers.
