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.
This commit is contained in:
Victor Stinner 2017-02-06 14:24:00 +01:00
parent 5bad70def6
commit 193ee0a0e8
3 changed files with 65 additions and 0 deletions

View File

@ -698,6 +698,10 @@ Documentation
Build 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 #29384: Remove old Be OS helper scripts.
- Issue #26851: Set Android compilation and link flags. - Issue #26851: Set Android compilation and link flags.

41
configure vendored
View File

@ -7242,6 +7242,47 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_enable_unreachable_code_warning" >&5 { $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 "$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 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
# support. Without this, treatment of subnormals doesn't follow # support. Without this, treatment of subnormals doesn't follow
# the standard. # the standard.

View File

@ -1689,6 +1689,26 @@ yes)
fi fi
AC_MSG_RESULT($ac_cv_enable_unreachable_code_warning) 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 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
# support. Without this, treatment of subnormals doesn't follow # support. Without this, treatment of subnormals doesn't follow
# the standard. # the standard.