]> www.ginac.de Git - cln.git/commitdiff
Avoid compiler warning about ignored 'flatten' attribute directive.
authorRichard Kreckel <kreckel@ginac.de>
Sat, 9 Feb 2008 16:44:17 +0000 (16:44 +0000)
committerRichard Kreckel <kreckel@ginac.de>
Sat, 9 Feb 2008 16:44:17 +0000 (16:44 +0000)
ChangeLog
configure.ac
include/cln/config.h.in
m4/cc.m4
src/base/cl_maybe_inline.h

index ee1c0319372833a842008a2d741bb56d840c636e..d70d354702decb3051a02e37c18bad1c8898bc5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-02-09  Alexei Sheplyakov  <varg@theor.jinr.ru>
+            Richard B. Kreckel  <kreckel@ginac.de>
+
+       Avoid compiler warning about ignored 'flatten' attribute directive:
+       * m4/cc.m4 (CL_ATTRIBUTE_FLATTEN): New macro...
+       * configure.ac: ...used here...
+       * include/cln/config.h.in: ...defining CL_HAVE_ATTRIBUTE_FLATTEN,...
+       * src/base/cl_maybe_inline.h: ...used to prevent a warning here.
+
 2007-02-07  Richard B. Kreckel  <kreckel@ginac.de>
 
        * include/cln/integer.h: Enable modifying operators by default.
index 2c90a92cbdd99eb7fb12c75a15a092c57d7aaa1f..e5e06de9567205eb3fbc8cc91bd5dc599abdd9bc 100644 (file)
@@ -147,6 +147,8 @@ CL_RUSAGE
                       dnl DEFS HAVE_SYS_RESOURCE_H, HAVE_GETRUSAGE, HAVE_SYS_TIMES_H
 CL_PERROR
                       dnl DEFS HAVE_PERROR_DECL
+CL_ATTRIBUTE_FLATTEN
+                      dnl DEFS CL_HAVE_ATTRIBUTE_FLATTEN
 dnl
 dnl           checks for compiler characteristics
 dnl
index ec00f5eb4d5a4c9dbf747de45958d1a2dc5b4837..b1b1ebdac7c84b366e0761d9677e1fe5284f0204 100644 (file)
 #ifndef CL_GLOBAL_CONSTRUCTOR_SUFFIX_NOPIC
 #undef CL_GLOBAL_CONSTRUCTOR_SUFFIX_NOPIC
 #endif
+/* Define if the compiler knows about __attribute__((flatten)). */
+#ifndef CL_HAVE_ATTRIBUTE_FLATTEN
+#undef CL_HAVE_ATTRIBUTE_FLATTEN
+#endif
 
 /* CL_CHAR_UNSIGNED */
 #ifndef __CHAR_UNSIGNED__
index ec6c5e8c3471c0ac48c09300710ff80a217744fe..0925662be6f2a838021e4e529afdc51473334f6b 100644 (file)
--- a/m4/cc.m4
+++ b/m4/cc.m4
@@ -67,3 +67,24 @@ EOF
   fi
   AC_SUBST(ASMFLAGS)
 ])
+
+
+dnl Checks whether the compiler supports __attribute__((flatten)).
+AC_DEFUN([CL_ATTRIBUTE_FLATTEN],[
+AC_REQUIRE([AC_PROG_CXX])
+AC_CACHE_CHECK([whether the compiler supports __attribute__((flatten))], cl_cv_have_attr_flatten, [dnl
+  cat > conftest.cc <<EOF
+void f() __attribute__((flatten));
+EOF
+AC_TRY_COMMAND(${CXX-g++} $CXXFLAGS -c conftest.cc >/dev/null 2>conftest.out)
+if grep -i "warning" conftest.out > /dev/null; then
+  cl_cv_have_attr_flatten=no
+else
+  cl_cv_have_attr_flatten=yes
+fi
+rm -f conftest*
+])
+if test $cl_cv_have_attr_flatten = yes; then
+  AC_DEFINE(CL_HAVE_ATTRIBUTE_FLATTEN)
+fi
+])
index 316cc5b0e126793bbf8469e8a18672b5ed9d5e56..4f7a98268b15d580b73b6e95cf380965d55a59c5 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef _CL_MAYBE_INLINE_H
 #define _CL_MAYBE_INLINE_H
 
+#include "cln/config.h"
+
 /*
  * Selectively inline a function in *some* translation units.
  *
  *    a function.
  * 2. It's ignored if the optimization is switched off.
  */
-#ifdef __GNUC__
+#if defined(__GNUC__) && defined(CL_ATTRIBUTE_FLATTEN)
 #define CL_FLATTEN __attribute__((flatten))
 #else
 #define CL_FLATTEN