11dnl -* - shell-script -* -
22dnl
3- dnl Copyright (c) 2018-2020 FUJITSU LIMITED. All rights reserved.
3+ dnl Copyright (c) 2018-2021 FUJITSU LIMITED. All rights reserved.
44dnl Copyright (c) 2020 Cisco Systems, Inc. All rights reserved.
55dnl $COPYRIGHT $
66dnl
@@ -47,9 +47,9 @@ AC_DEFUN([OPAL_CHECK_ALT_SHORT_FLOAT], [
4747 # automagically add that flag -- we'll just emit a warning and
4848 # point the user to a README where more information is
4949 # available.
50- AC_MSG_CHECKING([if compiler supports arithmetic operations on $opal_short_float_type ])
5150 AS_IF([test $opal_alt_short_float_exists -eq 1],
52- [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[
51+ [AC_MSG_CHECKING([if compiler supports arithmetic operations on $opal_short_float_type ])
52+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[
5353static $opal_short_float_type a = 2.5, b = 3.8;
5454a += b; ]])],
5555 [AC_MSG_RESULT([yes])
@@ -74,6 +74,29 @@ a += b;]])],
7474 AC_CHECK_SIZEOF(opal_short_float_t)
7575 AC_CHECK_SIZEOF(opal_short_float_complex_t)
7676 OPAL_C_GET_ALIGNMENT(opal_short_float_t, OPAL_ALIGNMENT_OPAL_SHORT_FLOAT_T)
77+
78+ # Some versions of GCC (around 9.1.0?) emit a warning for _Float16
79+ # when compiling with -pedantic. Using __extension__ can suppress
80+ # the warning. The warning can be detected by -Werror in configure.
81+ # See https://github.com/open-mpi/ompi/issues/8840
82+ AC_MSG_CHECKING([if $opal_short_float_type needs __extension__ keyword])
83+ opal_alt_short_float_needs_extension=0
84+ OPAL_VAR_SCOPE_PUSH([CFLAGS_save])
85+ CFLAGS_save=$CFLAGS
86+ CFLAGS=" -Werror $CFLAGS "
87+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([$opal_short_float_type a; ])],
88+ [AC_MSG_RESULT([no])],
89+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE([__extension__ $opal_short_float_type a; ])],
90+ [opal_alt_short_float_needs_extension= 1
91+ AC_MSG_RESULT([yes])],
92+ [AC_MSG_RESULT([no])])])
93+ CFLAGS=$CFLAGS_save
94+ OPAL_VAR_SCOPE_POP
95+ AC_DEFINE_UNQUOTED(OPAL_SHORT_FLOAT_TYPE, [[$opal_short_float_type ]],
96+ [User-selected alternate C type of short float (used to redefine opal_short_float_t in opal_bottom.h)])
97+ AC_DEFINE_UNQUOTED(OPAL_SHORT_FLOAT_NEEDS_EXTENSION,
98+ [$opal_alt_short_float_needs_extension ],
99+ [Whether $opal_short_float_type needs __extension__ keyword])
77100 elif test " $enable_alt_short_float " ! = " " ; then
78101 AC_MSG_ERROR([Alternate C type of short float $opal_short_float_type requested but not available. Aborting])
79102 fi
0 commit comments