diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 646610a94bf158c74e83d37091372a0a720a3269..2654ccd1d47251ac5d2766d2f30553edc51e6def 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -822,22 +822,26 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
 tree
 convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain)
 {
-  tree exprv;
-
   if (expr == error_mark_node
       || TREE_TYPE (expr) == error_mark_node)
     return error_mark_node;
 
-  exprv = expr;
-  while (TREE_CODE (exprv) == COMPOUND_EXPR)
-    exprv = TREE_OPERAND (exprv, 1);
-  if (DECL_P (exprv) || handled_component_p (exprv))
-    /* Expr is not being 'used' here, otherwise we whould have
-       called mark_{rl}value_use use here, which would have in turn
-       called mark_exp_read.  Rather, we call mark_exp_read directly
-       to avoid some warnings when
-       -Wunused-but-set-{variable,parameter} is in effect.  */
-    mark_exp_read (exprv);
+  if (implicit == NULL)
+    mark_rvalue_use (expr);
+  else
+    {
+      tree exprv = expr;
+    
+      while (TREE_CODE (exprv) == COMPOUND_EXPR)
+	exprv = TREE_OPERAND (exprv, 1);
+      if (DECL_P (exprv) || handled_component_p (exprv))
+	/* Expr is not being 'used' here, otherwise we whould have
+	   called mark_{rl}value_use use here, which would have in turn
+	   called mark_exp_read.  Rather, we call mark_exp_read directly
+	   to avoid some warnings when
+	   -Wunused-but-set-{variable,parameter} is in effect.  */
+	mark_exp_read (exprv);
+    }
 
   if (!TREE_TYPE (expr))
     return expr;
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index b38ab2e59912dce35e7d45e2f9754c8607ac34ab..c0859520d738eb39e2fc37072e2203b71502de59 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -4875,7 +4875,7 @@ simplify_immed_subreg (enum machine_mode outermode, rtx op,
 	 a mistake.)  */
       {
 	unsigned byte = (elem * elem_bitsize) / BITS_PER_UNIT;
-	unsigned ibyte = (((num_elem - 1 - elem) * elem_bitsize)
+	unsigned ibyte ATTRIBUTE_UNUSED = (((num_elem - 1 - elem) * elem_bitsize)
 			  / BITS_PER_UNIT);
 	unsigned word_byte = WORDS_BIG_ENDIAN ? ibyte : byte;
 	unsigned subword_byte = BYTES_BIG_ENDIAN ? ibyte : byte;
@@ -4979,7 +4979,7 @@ simplify_immed_subreg (enum machine_mode outermode, rtx op,
      will already have offset 0.  */
   if (GET_MODE_SIZE (innermode) >= GET_MODE_SIZE (outermode))
     {
-      unsigned ibyte = (GET_MODE_SIZE (innermode) - GET_MODE_SIZE (outermode)
+      unsigned ibyte ATTRIBUTE_UNUSED = (GET_MODE_SIZE (innermode) - GET_MODE_SIZE (outermode)
 			- byte);
       unsigned word_byte = WORDS_BIG_ENDIAN ? ibyte : byte;
       unsigned subword_byte = BYTES_BIG_ENDIAN ? ibyte : byte;
@@ -5024,7 +5024,7 @@ simplify_immed_subreg (enum machine_mode outermode, rtx op,
 	 a mistake.)  */
       {
 	unsigned byte = (elem * elem_bitsize) / BITS_PER_UNIT;
-	unsigned ibyte = (((num_elem - 1 - elem) * elem_bitsize)
+	unsigned ibyte ATTRIBUTE_UNUSED = (((num_elem - 1 - elem) * elem_bitsize)
 			  / BITS_PER_UNIT);
 	unsigned word_byte = WORDS_BIG_ENDIAN ? ibyte : byte;
 	unsigned subword_byte = BYTES_BIG_ENDIAN ? ibyte : byte;
diff --git a/libcpp/aclocal.m4 b/libcpp/aclocal.m4
index c3a9f037ae8f8b1d868123c53a6294972478c7b9..a92771a5aa13a99839a04e891578502136ae081c 100644
--- a/libcpp/aclocal.m4
+++ b/libcpp/aclocal.m4
@@ -22,3 +22,74 @@ m4_include([../config/lib-link.m4])
 m4_include([../config/lib-prefix.m4])
 m4_include([../config/override.m4])
 m4_include([../config/warnings.m4])
+
+## ---------------------------------------------------------------- ##
+## Checking for declared symbols.                                   ##
+## This is like *AC_CHECK_DECL*, except that for c++, we may use a  ##
+## prototype to check for a (possibly overloaded) function.         ##
+## ---------------------------------------------------------------- ##
+
+
+# _AC_CHECK_PROTO_BODY
+# -------------------
+# Shell function body for AC_CHECK_PROTO.
+m4_define([_AC_CHECK_PROTO_BODY],
+[  AS_LINENO_PUSH([$[]1])
+  [as_decl_name=`echo $][2|sed 's/(.*//'`]
+  [as_decl_use=`echo $][2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`]
+  AC_CACHE_CHECK([whether $as_decl_name is declared], [$[]3],
+  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$[]4],
+[@%:@ifndef $[]as_decl_name
+@%:@ifdef __cplusplus
+  (void) $[]as_decl_use;
+@%:@else
+  (void) $[]as_decl_name;
+@%:@endif
+@%:@endif
+])],
+		   [AS_VAR_SET([$[]3], [yes])],
+		   [AS_VAR_SET([$[]3], [no])])])
+  AS_LINENO_POP
+])# _AC_CHECK_PROTO_BODY
+
+# AC_CHECK_PROTO(SYMBOL,
+#               [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+#               [INCLUDES = DEFAULT-INCLUDES])
+# -------------------------------------------------------
+# Check whether SYMBOL (a function, variable, or constant) is declared.
+AC_DEFUN([AC_CHECK_PROTO],
+[AC_REQUIRE_SHELL_FN([ac_fn_]_AC_LANG_ABBREV[_check_proto],
+  [AS_FUNCTION_DESCRIBE([ac_fn_]_AC_LANG_ABBREV[_check_proto],
+    [LINENO SYMBOL VAR],
+    [Tests whether SYMBOL is declared, setting cache variable VAR accordingly.])],
+  [_$0_BODY])]dnl
+[AS_VAR_PUSHDEF([ac_Symbol], [ac_cv_have_decl_$1])]dnl
+[ac_fn_[]_AC_LANG_ABBREV[]_check_proto ]dnl
+["$LINENO" "$1" "ac_Symbol" "AS_ESCAPE([AC_INCLUDES_DEFAULT([$4])], [""])"
+AS_VAR_IF([ac_Symbol], [yes], [$2], [$3])
+AS_VAR_POPDEF([ac_Symbol])dnl
+])# AC_CHECK_PROTO
+
+
+# _AC_CHECK_PROTOS(SYMBOL, ACTION-IF_FOUND, ACTION-IF-NOT-FOUND,
+#                  INCLUDES)
+# -------------------------------------------------------------
+# Helper to AC_CHECK_PROTOS, which generates the check for a single
+# SYMBOL with INCLUDES, performs the AC_DEFINE, then expands
+# ACTION-IF-FOUND or ACTION-IF-NOT-FOUND.
+m4_define([_AC_CHECK_PROTOS],
+[AC_CHECK_PROTO([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])]dnl
+[AC_DEFINE_UNQUOTED(AS_TR_CPP(patsubst(HAVE_DECL_[$1],[(.*])), [$ac_have_decl],
+  [Define to 1 if you have the declaration of `$1',
+   and to 0 if you don't.])]dnl
+[m4_ifvaln([$2$3], [AS_IF([test $ac_have_decl = 1], [$2], [$3])])])
+
+# AC_CHECK_PROTOS(SYMBOLS,
+#                 [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+#                 [INCLUDES = DEFAULT-INCLUDES])
+# --------------------------------------------------------
+# Defines HAVE_DECL_SYMBOL to 1 if declared, 0 otherwise.  See the
+# documentation for a detailed explanation of this difference with
+# other AC_CHECK_*S macros.  SYMBOLS is an m4 list.
+AC_DEFUN([AC_CHECK_PROTOS],
+[m4_map_args_sep([_$0(], [, [$2], [$3], [$4])], [], $1)])
diff --git a/libcpp/configure b/libcpp/configure
index 00cbd7a583d133c7c3e55c1fe430badf85423de4..b6e184e3c1cde13f8d370e30d9c4002bf4d811a5 100755
--- a/libcpp/configure
+++ b/libcpp/configure
@@ -2233,14 +2233,16 @@ $as_echo "$ac_res" >&6; }
 
 } # ac_fn_cxx_check_func
 
-# ac_fn_cxx_check_decl LINENO SYMBOL VAR
-# --------------------------------------
+# ac_fn_cxx_check_proto LINENO SYMBOL VAR
+# ---------------------------------------
 # Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
-ac_fn_cxx_check_decl ()
+ac_fn_cxx_check_proto ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5
-$as_echo_n "checking whether $2 is declared... " >&6; }
+  as_decl_name=`echo $2|sed 's/(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
 if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
   $as_echo_n "(cached) " >&6
 else
@@ -2250,8 +2252,12 @@ $4
 int
 main ()
 {
-#ifndef $2
-  (void) $2;
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
 #endif
 
   ;
@@ -2270,7 +2276,7 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
-} # ac_fn_cxx_check_decl
+} # ac_fn_cxx_check_proto
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
@@ -5460,7 +5466,7 @@ _ACEOF
 fi
 done
 
-ac_fn_cxx_check_decl "$LINENO" "abort" "ac_cv_have_decl_abort" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "abort" "ac_cv_have_decl_abort" "$ac_includes_default"
 if test "x$ac_cv_have_decl_abort" = x""yes; then :
   ac_have_decl=1
 else
@@ -5470,7 +5476,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_ABORT $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
 if test "x$ac_cv_have_decl_asprintf" = x""yes; then :
   ac_have_decl=1
 else
@@ -5480,8 +5486,8 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_ASPRINTF $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "basename" "ac_cv_have_decl_basename" "$ac_includes_default"
-if test "x$ac_cv_have_decl_basename" = x""yes; then :
+ac_fn_cxx_check_proto "$LINENO" "basename(char*)" "ac_cv_have_decl_basename_charp_" "$ac_includes_default"
+if test "x$ac_cv_have_decl_basename_charp_" = x""yes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
@@ -5490,7 +5496,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_BASENAME $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "errno" "ac_cv_have_decl_errno" "$ac_includes_default"
 if test "x$ac_cv_have_decl_errno" = x""yes; then :
   ac_have_decl=1
 else
@@ -5500,7 +5506,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_ERRNO $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "getopt" "ac_cv_have_decl_getopt" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "getopt" "ac_cv_have_decl_getopt" "$ac_includes_default"
 if test "x$ac_cv_have_decl_getopt" = x""yes; then :
   ac_have_decl=1
 else
@@ -5510,7 +5516,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_GETOPT $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_clearerr_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5520,7 +5526,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_CLEARERR_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_feof_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5530,7 +5536,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "ferror_unlocked" "ac_cv_have_decl_ferror_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_ferror_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5540,7 +5546,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FERROR_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fflush_unlocked" "ac_cv_have_decl_fflush_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fflush_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5550,7 +5556,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FFLUSH_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fgetc_unlocked" "ac_cv_have_decl_fgetc_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fgetc_unlocked" "ac_cv_have_decl_fgetc_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fgetc_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5560,7 +5566,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FGETC_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fgets_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5570,7 +5576,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fileno_unlocked" "ac_cv_have_decl_fileno_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fileno_unlocked" "ac_cv_have_decl_fileno_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fileno_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5580,7 +5586,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FILENO_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fprintf_unlocked" "ac_cv_have_decl_fprintf_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fprintf_unlocked" "ac_cv_have_decl_fprintf_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fprintf_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5590,7 +5596,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FPRINTF_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fputc_unlocked" "ac_cv_have_decl_fputc_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fputc_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5600,7 +5606,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FPUTC_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fputs_unlocked" "ac_cv_have_decl_fputs_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fputs_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5610,7 +5616,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FPUTS_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fread_unlocked" "ac_cv_have_decl_fread_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fread_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5620,7 +5626,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FREAD_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "fwrite_unlocked" "ac_cv_have_decl_fwrite_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_fwrite_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5630,7 +5636,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_FWRITE_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "getchar_unlocked" "ac_cv_have_decl_getchar_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_getchar_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5640,7 +5646,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_GETCHAR_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5650,7 +5656,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "putchar_unlocked" "ac_cv_have_decl_putchar_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_putchar_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5660,7 +5666,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_PUTCHAR_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "putc_unlocked" "ac_cv_have_decl_putc_unlocked" "$ac_includes_default"
 if test "x$ac_cv_have_decl_putc_unlocked" = x""yes; then :
   ac_have_decl=1
 else
@@ -5670,7 +5676,7 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_PUTC_UNLOCKED $ac_have_decl
 _ACEOF
-ac_fn_cxx_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
+ac_fn_cxx_check_proto "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
 if test "x$ac_cv_have_decl_vasprintf" = x""yes; then :
   ac_have_decl=1
 else
diff --git a/libcpp/configure.ac b/libcpp/configure.ac
index d520e933c902e31b1cf0cd010bb20cae9ba0d00a..31fb8ba8f038df74bff89bf5f30baffbad0ba027 100644
--- a/libcpp/configure.ac
+++ b/libcpp/configure.ac
@@ -81,8 +81,8 @@ define(libcpp_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
   putchar_unlocked putc_unlocked)
 AC_CHECK_FUNCS(libcpp_UNLOCKED_FUNCS)
-AC_CHECK_DECLS(m4_split(m4_normalize(abort asprintf basename errno getopt \
-  libcpp_UNLOCKED_FUNCS vasprintf)))
+AC_CHECK_PROTOS(m4_split(m4_normalize(abort asprintf basename(char*) errno \
+  getopt libcpp_UNLOCKED_FUNCS vasprintf)))
 
 # Checks for library functions.
 AC_FUNC_ALLOCA