On Tue, 2004-10-19 at 11:59, Neil Conway wrote:
> -Wpointer-arith might be worth enabling. I'll add it to the GCC CFLAGS
> in the next patch I send in.

Attached is a revised patch. Changes:

- add -Wpointer-arith to the default CFLAGS when using GCC

- add an AC macro AC_PROG_CC_CFLAGS_OPT that checks if $CC supports the
specified command-line option and adds it to the CFLAGS if it does

- replace the hard-coded test for -fno-strict-aliasing with
AC_PROG_CC_CFLAGS, and use AC_PROG_CC_CFLAGS to check for
-Wendif-labels, -Wdeclaration-after-statement, and
-Wold-style-definition

Barring any objections, I will apply this to CVS tomorrow.

BTW, since we're on the topic of compiler options, is there a reason we
don't use -g3 with GCC when --enable-debug is specified? It seems worth
using to me.

-Neil

Index: configure
===================================================================
RCS file: /var/lib/cvs/pgsql/configure,v
retrieving revision 1.402
diff -c -r1.402 configure
*** configure	15 Oct 2004 05:10:53 -0000	1.402
--- configure	19 Oct 2004 06:32:31 -0000
***************
*** 2433,2454 ****
  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"
  
--- 2433,2539 ----
  fi
  
  # Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
! echo "$as_me:$LINENO: checking if $CC supports -fno-strict-aliasing" >&5
! echo $ECHO_N "checking if $CC supports -fno-strict-aliasing... $ECHO_C" >&6
! pgac_save_CFLAGS=$CFLAGS
! CFLAGS="$pgac_save_CFLAGS -fno-strict-aliasing"
! 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
!   echo "$as_me:$LINENO: result: yes" >&5
! echo "${ECHO_T}yes" >&6
  else
!   echo "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! CFLAGS="$pgac_save_CFLAGS"
!                     echo "$as_me:$LINENO: result: no" >&5
! echo "${ECHO_T}no" >&6
! fi
! rm -f conftest.$ac_objext conftest.$ac_ext
! 
! 
  if test "$GCC" = yes; then
!   CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith"
! 
!   # Recent versions of GCC support some useful warning options. Check
!   # whether they are supported, and add them to CFLAGS if so.
!   echo "$as_me:$LINENO: checking if $CC supports -Wdeclaration-after-statement" >&5
! echo $ECHO_N "checking if $CC supports -Wdeclaration-after-statement... $ECHO_C" >&6
! pgac_save_CFLAGS=$CFLAGS
! CFLAGS="$pgac_save_CFLAGS -Wdeclaration-after-statement"
! 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
!   echo "$as_me:$LINENO: result: yes" >&5
! echo "${ECHO_T}yes" >&6
  else
!   echo "$as_me: failed program was:" >&5
! cat conftest.$ac_ext >&5
! CFLAGS="$pgac_save_CFLAGS"
!                     echo "$as_me:$LINENO: result: no" >&5
! echo "${ECHO_T}no" >&6
  fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
  
!   echo "$as_me:$LINENO: checking if $CC supports -Wold-style-definition" >&5
! echo $ECHO_N "checking if $CC supports -Wold-style-definition... $ECHO_C" >&6
! pgac_save_CFLAGS=$CFLAGS
! CFLAGS="$pgac_save_CFLAGS -Wold-style-definition"
! cat >conftest.$ac_ext <<_ACEOF
  #line $LINENO "configure"
  #include "confdefs.h"
  
***************
*** 2478,2500 ****
    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
--- 2563,2624 ----
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
!   echo "$as_me:$LINENO: result: yes" >&5
! echo "${ECHO_T}yes" >&6
  else
    echo "$as_me: failed program was:" >&5
  cat conftest.$ac_ext >&5
+ CFLAGS="$pgac_save_CFLAGS"
+                     echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
  fi
  rm -f conftest.$ac_objext conftest.$ac_ext
  
!   echo "$as_me:$LINENO: checking if $CC supports -Wendif-labels" >&5
! echo $ECHO_N "checking if $CC supports -Wendif-labels... $ECHO_C" >&6
! pgac_save_CFLAGS=$CFLAGS
! CFLAGS="$pgac_save_CFLAGS -Wendif-labels"
! 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
+   echo "$as_me:$LINENO: result: yes" >&5
+ echo "${ECHO_T}yes" >&6
+ else
+   echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ CFLAGS="$pgac_save_CFLAGS"
+                     echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
  fi
! rm -f conftest.$ac_objext conftest.$ac_ext
  
  fi
  
  # supply -g if --enable-debug
Index: configure.in
===================================================================
RCS file: /var/lib/cvs/pgsql/configure.in,v
retrieving revision 1.381
diff -c -r1.381 configure.in
*** configure.in	15 Oct 2004 05:10:59 -0000	1.381
--- configure.in	19 Oct 2004 06:18:42 -0000
***************
*** 251,257 ****
  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
--- 251,267 ----
  fi
  
  # Need to specify -fno-strict-aliasing too in case it's gcc 3.3 or later.
! PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing])
! 
! if test "$GCC" = yes; then
!   CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wpointer-arith"
! 
!   # Recent versions of GCC support some useful warning options. Check
!   # whether they are supported, and add them to CFLAGS if so.
!   PGAC_PROG_CC_CFLAGS_OPT([-Wdeclaration-after-statement])
!   PGAC_PROG_CC_CFLAGS_OPT([-Wold-style-definition])
!   PGAC_PROG_CC_CFLAGS_OPT([-Wendif-labels])
! fi
  
  # supply -g if --enable-debug
  if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
Index: config/c-compiler.m4
===================================================================
RCS file: /var/lib/cvs/pgsql/config/c-compiler.m4,v
retrieving revision 1.12
diff -c -r1.12 c-compiler.m4
*** config/c-compiler.m4	2 Feb 2004 04:07:18 -0000	1.12
--- config/c-compiler.m4	19 Oct 2004 06:32:16 -0000
***************
*** 121,155 ****
  fi
  fi])# PGAC_C_FUNCNAME_SUPPORT
  
! 
! # 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
! 
  
  # The below backpatches the following Autoconf change:
  #
--- 121,139 ----
  fi
  fi])# PGAC_C_FUNCNAME_SUPPORT
  
! # PGAC_PROG_CC_CFLAGS_OPT
! # -----------------------
! # Given a string, check if the compiler supports the string as a
! # command-line option. If it does, add the string to CFLAGS.
! AC_DEFUN([PGAC_PROG_CC_CFLAGS_OPT],
! [AC_MSG_CHECKING([if $CC supports $1])
! pgac_save_CFLAGS=$CFLAGS
! CFLAGS="$pgac_save_CFLAGS $1"
! _AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
!                    AC_MSG_RESULT(yes),
!                    [CFLAGS="$pgac_save_CFLAGS"
!                     AC_MSG_RESULT(no)])
! ])# PGAC_PROG_CC_CFLAGS_OPT
  
  # The below backpatches the following Autoconf change:
  #
Index: src/Makefile.global.in
===================================================================
RCS file: /var/lib/cvs/pgsql/src/Makefile.global.in,v
retrieving revision 1.203
diff -c -r1.203 Makefile.global.in
*** src/Makefile.global.in	15 Oct 2004 17:10:58 -0000	1.203
--- src/Makefile.global.in	19 Oct 2004 05:29:03 -0000
***************
*** 184,192 ****
  CC = @CC@
  GCC = @GCC@
  CFLAGS = @CFLAGS@
- ifeq ($(GCC), yes)
-   CFLAGS += -Wall -Wmissing-prototypes -Wmissing-declarations
- endif
  
  # Kind-of compilers
  
--- 184,189 ----
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to