diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2017-02-06 14:24:00 +0100 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2017-02-06 14:24:00 +0100 |
commit | b9bcd948d6c64f86e0999e14542be258b0732792 (patch) | |
tree | 7a48cb166d390309d1aa41abe7a089f03c89df05 | |
parent | 1b154e367502946cae598b9872f2f03dc64aa089 (diff) | |
download | cpython-b9bcd948d6c64f86e0999e14542be258b0732792.tar.gz |
Prohibit implicit C function declarations
Issue #27659: use -Werror=implicit-function-declaration when possible (GCC and
Clang, but it depends on the compiler version).
Patch written by Chi Hsuan Yen.
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rwxr-xr-x | configure | 41 | ||||
-rw-r--r-- | configure.ac | 20 |
3 files changed, 65 insertions, 0 deletions
@@ -698,6 +698,10 @@ Documentation Build ----- +- Issue #27659: Prohibit implicit C function declarations: use + -Werror=implicit-function-declaration when possible (GCC and Clang, but it + depends on the compiler version). Patch written by Chi Hsuan Yen. + - Issue #29384: Remove old Be OS helper scripts. - Issue #26851: Set Android compilation and link flags. @@ -7242,6 +7242,47 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5 $as_echo "$ac_cv_enable_unreachable_code_warning" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can make implicit function declaration an error in $CC" >&5 +$as_echo_n "checking if we can make implicit function declaration an error in $CC... " >&6; } + ac_save_cc="$CC" + CC="$CC -Werror=implicit-function-declaration" + if ${ac_cv_enable_implicit_function_declaration_error+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + ac_cv_enable_implicit_function_declaration_error=yes + +else + + ac_cv_enable_implicit_function_declaration_error=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + CC="$ac_save_cc" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_implicit_function_declaration_error" >&5 +$as_echo "$ac_cv_enable_implicit_function_declaration_error" >&6; } + + if test $ac_cv_enable_implicit_function_declaration_error = yes + then + CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration" + fi + # if using gcc on alpha, use -mieee to get (near) full IEEE 754 # support. Without this, treatment of subnormals doesn't follow # the standard. diff --git a/configure.ac b/configure.ac index 09b54a7d5f..5610c5759d 100644 --- a/configure.ac +++ b/configure.ac @@ -1689,6 +1689,26 @@ yes) fi AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning) + AC_MSG_CHECKING(if we can make implicit function declaration an error in $CC) + ac_save_cc="$CC" + CC="$CC -Werror=implicit-function-declaration" + AC_CACHE_VAL(ac_cv_enable_implicit_function_declaration_error, + AC_COMPILE_IFELSE( + [ + AC_LANG_PROGRAM([[]], [[]]) + ],[ + ac_cv_enable_implicit_function_declaration_error=yes + ],[ + ac_cv_enable_implicit_function_declaration_error=no + ])) + CC="$ac_save_cc" + AC_MSG_RESULT($ac_cv_enable_implicit_function_declaration_error) + + if test $ac_cv_enable_implicit_function_declaration_error = yes + then + CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration" + fi + # if using gcc on alpha, use -mieee to get (near) full IEEE 754 # support. Without this, treatment of subnormals doesn't follow # the standard. |