This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/33583] FAIL: gfortran.dg/gamma_1.f90
- From: "fxcoudert at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Sep 2007 22:28:02 -0000
- Subject: [Bug libfortran/33583] FAIL: gfortran.dg/gamma_1.f90
- References: <bug-33583-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from fxcoudert at gcc dot gnu dot org 2007-09-30 22:28 -------
The patch below should provide fallback functions (build in maintainer mode or
use autoreconf in libgfortran), does it work?
Index: intrinsics/c99_functions.c
===================================================================
--- intrinsics/c99_functions.c (revision 128673)
+++ intrinsics/c99_functions.c (working copy)
@@ -168,6 +168,31 @@ erfcf (float x)
#endif
+/* Wrappers for systems without the C99 gammaf() and lgammaf() functions. */
+
+#if defined(HAVE_GAMMA) && !defined(HAVE_GAMMAF)
+#define HAVE_GAMMAF 1
+extern float gammaf (float);
+
+float
+gammaf (float x)
+{
+ return (float) gamma ((double) x);
+}
+#endif
+
+#if defined(HAVE_LGAMMA) && !defined(HAVE_LGAMMAF)
+#define HAVE_LGAMMAF 1
+extern float lgammaf (float);
+
+float
+lgammaf (float x)
+{
+ return (float) lgamma ((double) x);
+}
+#endif
+
+
#ifndef HAVE_ACOSF
#define HAVE_ACOSF 1
float
Index: c99_protos.h
===================================================================
--- c99_protos.h (revision 128673)
+++ c99_protos.h (working copy)
@@ -284,6 +284,19 @@ extern float erfcf (float);
#endif
+/* Wrappers for systems without the C99 gammaf() and lgammaf() functions. */
+
+#if defined(HAVE_GAMMA) && !defined(HAVE_GAMMAF)
+#define HAVE_GAMMAF 1
+extern float gammaf (float);
+#endif
+
+#if defined(HAVE_LGAMMA) && !defined(HAVE_LGAMMAF)
+#define HAVE_LGAMMAF 1
+extern float lgammaf (float);
+#endif
+
+
/* log10l is needed on all platforms for decimal I/O */
#ifndef HAVE_LOG10L
Index: configure.ac
===================================================================
--- configure.ac (revision 128673)
+++ configure.ac (working copy)
@@ -379,6 +379,10 @@ AC_CHECK_LIB([m],[y1l],[AC_DEFINE([HAVE_
AC_CHECK_LIB([m],[ynf],[AC_DEFINE([HAVE_YNF],[1],[libm includes ynf])])
AC_CHECK_LIB([m],[yn],[AC_DEFINE([HAVE_YN],[1],[libm includes yn])])
AC_CHECK_LIB([m],[ynl],[AC_DEFINE([HAVE_YNL],[1],[libm includes ynl])])
+AC_CHECK_LIB([m],[gamma],[AC_DEFINE([HAVE_GAMMA],[1],[libm includes gamma])])
+AC_CHECK_LIB([m],[gammaf],[AC_DEFINE([HAVE_GAMMAF],[1],[libm includes
gammaf])]
)
+AC_CHECK_LIB([m],[lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[libm includes
lgamma])]
)
+AC_CHECK_LIB([m],[lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[libm includes
lgammaf
])])
# On AIX, clog is present in libm as __clog
AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])
--
fxcoudert at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |fxcoudert at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33583