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.