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.

Reply via email to