Do not issue psabi warning for 16-bit floating point library calls.

2025-10-17  Michael Meissner  <meissner@linux.ibm.com>

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.
This commit is contained in:
Michael Meissner 2025-10-17 23:33:12 -04:00
parent 16967ce96a
commit 96da9d464a
1 changed files with 5 additions and 4 deletions

View File

@ -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.