summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2004-02-02 04:08:12 +0000
committerTom Lane2004-02-02 04:08:12 +0000
commit3c373885fa37c707b8ff37d2c6fd0aa0dae51a23 (patch)
tree5812570672730ec3badbf87c16ed47855a1d1e8c
parenta60442a44656214e5370dd40b76715e9c348231e (diff)
Do not let external specification of CFLAGS stop us from adding
-fno-strict-aliasing.
-rw-r--r--config/c-compiler.m431
-rwxr-xr-xconfigure67
-rw-r--r--configure.in7
3 files changed, 103 insertions, 2 deletions
diff --git a/config/c-compiler.m4 b/config/c-compiler.m4
index 5171e1e6d97..f02243ded0c 100644
--- a/config/c-compiler.m4
+++ b/config/c-compiler.m4
@@ -1,5 +1,5 @@
# Macros to detect C compiler features
-# $Header: /cvsroot/pgsql/config/c-compiler.m4,v 1.5 2002/03/29 17:32:53 petere Exp $
+# $Header: /cvsroot/pgsql/config/c-compiler.m4,v 1.5.2.1 2004/02/02 04:08:02 tgl Exp $
# PGAC_C_SIGNED
@@ -92,3 +92,32 @@ AC_DEFINE_UNQUOTED(AS_TR_CPP(alignof_$1),
[$AS_TR_SH([pgac_cv_alignof_$1])],
[The alignment requirement of a `$1'])
])# PGAC_CHECK_ALIGNOF
+
+
+# PGAC_PROG_CC_NO_STRICT_ALIASING
+# -------------------------------
+# Find out how to turn off strict aliasing in the C compiler.
+AC_DEFUN([PGAC_PROG_CC_NO_STRICT_ALIASING],
+[AC_CACHE_CHECK([how to turn off strict aliasing in $CC],
+ pgac_cv_prog_cc_no_strict_aliasing,
+[pgac_save_CFLAGS=$CFLAGS
+if test "$GCC" = yes; then
+ pgac_try="-fno-strict-aliasing"
+else
+ # Maybe fill in later...
+ pgac_try=
+fi
+
+for pgac_flag in $pgac_try; do
+ CFLAGS="$pgac_save_CFLAGS $pgac_flag"
+ _AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [pgac_cv_prog_cc_no_strict_aliasing=$pgac_try
+break])
+done
+
+CFLAGS=$pgac_save_CFLAGS
+])
+
+if test x"$pgac_cv_prog_cc_no_strict_aliasing" != x""; then
+ CFLAGS="$CFLAGS $pgac_cv_prog_cc_no_strict_aliasing"
+fi])# PGAC_PROG_CC_NO_STRICT_ALIASING
diff --git a/configure b/configure
index e076bc43c5e..118562c4973 100755
--- a/configure
+++ b/configure
@@ -2437,6 +2437,73 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test "$ac_env_CFLAGS_set" = set; then
CFLAGS=$ac_env_CFLAGS_value
fi
+
+# Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
+echo "$as_me:$LINENO: checking how to turn off strict aliasing in $CC" >&5
+echo $ECHO_N "checking how to turn off strict aliasing in $CC... $ECHO_C" >&6
+if test "${pgac_cv_prog_cc_no_strict_aliasing+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ pgac_save_CFLAGS=$CFLAGS
+if test "$GCC" = yes; then
+ pgac_try="-fno-strict-aliasing"
+else
+ # Maybe fill in later...
+ pgac_try=
+fi
+
+for pgac_flag in $pgac_try; do
+ CFLAGS="$pgac_save_CFLAGS $pgac_flag"
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#ifdef F77_DUMMY_MAIN
+# ifdef __cplusplus
+ extern "C"
+# endif
+ int F77_DUMMY_MAIN() { return 1; }
+#endif
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ pgac_cv_prog_cc_no_strict_aliasing=$pgac_try
+break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+CFLAGS=$pgac_save_CFLAGS
+
+fi
+echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_no_strict_aliasing" >&5
+echo "${ECHO_T}$pgac_cv_prog_cc_no_strict_aliasing" >&6
+
+if test x"$pgac_cv_prog_cc_no_strict_aliasing" != x""; then
+ CFLAGS="$CFLAGS $pgac_cv_prog_cc_no_strict_aliasing"
+fi
+
+# supply -g if --enable-debug
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
CFLAGS="$CFLAGS -g"
fi
diff --git a/configure.in b/configure.in
index 154cbf90430..54ad53fbd4b 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.217.2.11 2003/12/02 16:23:03 tgl Exp $
+dnl $Header: /cvsroot/pgsql/configure.in,v 1.217.2.12 2004/02/02 04:08:12 tgl Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
@@ -249,6 +249,11 @@ AC_PROG_CC([$pgac_cc_list])
if test "$ac_env_CFLAGS_set" = set; then
CFLAGS=$ac_env_CFLAGS_value
fi
+
+# Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
+PGAC_PROG_CC_NO_STRICT_ALIASING
+
+# supply -g if --enable-debug
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
CFLAGS="$CFLAGS -g"
fi