2012-06-18  Steven Bosscher  <steven@gcc.gnu.org>

	* doc/tm.texi.in: Rename NO_IMPLICIT_EXTERN_C to IMPLICIT_EXTERN_C
	and invert meaning to avoid double negations.
	* doc/tm.texi: Regenerate.
	* doc/cpp.texi: Fixup reference to NO_IMPLICIT_EXTERN_C/

	* c-family/c-lex.c (fe_file_change): Update for change from
	NO_IMPLICIT_EXTERN_C to IMPLICIT_EXTERN_C.
	* cp/decl.c (decls_match): Likewise.
	* cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.

	* config/alpha/alpha.h (NO_IMPLICIT_EXTERN_C): Remove.
	* config/s390/tpf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/spu/spu.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/sparc/sp64-elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/sparc/sp-elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/vx-common.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/i386/cygming.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/i386/djgpp.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/i386/i386-interix.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/i386/nto.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/sol2.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/xtensa/elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/stormy16/stormy16.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/lm32/uclinux-elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/lm32/lm32.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/lynx.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/cris/cris.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/netbsd.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/gnu-user.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/ia64/hpux.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/rtems.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/rs6000/sysv4.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/darwin.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/arm/uclinux-elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/pa/pa-hpux.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/mips/elf.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/freebsd.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/v850/v850.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/mmix/mmix.h (NO_IMPLICIT_EXTERN_C): Likewise
	* config/bfin/elf.h (NO_IMPLICIT_EXTERN_C): Likewise

	* config/sparc/openbsd64.h (NO_IMPLICIT_EXTERN_C): Do not undef.
	(NO_IMPLICIT_EXTERN_C): Define.

Index: doc/tm.texi.in
===================================================================
--- doc/tm.texi.in	(revision 188725)
+++ doc/tm.texi.in	(working copy)
@@ -10581,10 +10581,10 @@ convention when processing system header
 files @code{__STDC__} will always expand to 1.
 @end defmac
 
-@defmac NO_IMPLICIT_EXTERN_C
-Define this macro if the system header files support C++ as well as C@.
-This macro inhibits the usual method of using system header files in
-C++, which is to pretend that the file's contents are enclosed in
+@defmac IMPLICIT_EXTERN_C
+Define this macro if the system header files do not support C++.
+This macro enables the old practice of using system header files in
+C++, pretending that the file's contents are enclosed in
 @samp{extern "C" @{@dots{}@}}.
 @end defmac
 
Index: doc/tm.texi
===================================================================
--- doc/tm.texi	(revision 188725)
+++ doc/tm.texi	(working copy)
@@ -10701,10 +10701,10 @@ convention when processing system header
 files @code{__STDC__} will always expand to 1.
 @end defmac
 
-@defmac NO_IMPLICIT_EXTERN_C
-Define this macro if the system header files support C++ as well as C@.
-This macro inhibits the usual method of using system header files in
-C++, which is to pretend that the file's contents are enclosed in
+@defmac IMPLICIT_EXTERN_C
+Define this macro if the system header files do not support C++.
+This macro enables the old practice of using system header files in
+C++, pretending that the file's contents are enclosed in
 @samp{extern "C" @{@dots{}@}}.
 @end defmac
 
Index: doc/cpp.texi
===================================================================
--- doc/cpp.texi	(revision 188725)
+++ doc/cpp.texi	(working copy)
@@ -3716,7 +3716,7 @@ so certain warnings should be suppressed
 @item 4
 This indicates that the following text should be treated as being
 wrapped in an implicit @code{extern "C"} block.
-@c maybe cross reference NO_IMPLICIT_EXTERN_C
+@c maybe cross reference IMPLICIT_EXTERN_C
 @end table
 
 As an extension, the preprocessor accepts linemarkers in non-assembler
Index: c-family/c-lex.c
===================================================================
--- c-family/c-lex.c	(revision 188725)
+++ c-family/c-lex.c	(working copy)
@@ -208,7 +208,7 @@ fe_file_change (const struct line_map *n
 
 	  input_location = new_map->start_location;
 	  (*debug_hooks->start_source_file) (line, LINEMAP_FILE (new_map));
-#ifndef NO_IMPLICIT_EXTERN_C
+#ifdef IMPLICIT_EXTERN_C
 	  if (c_header_level)
 	    ++c_header_level;
 	  else if (LINEMAP_SYSP (new_map) == 2)
@@ -221,7 +221,7 @@ fe_file_change (const struct line_map *n
     }
   else if (new_map->reason == LC_LEAVE)
     {
-#ifndef NO_IMPLICIT_EXTERN_C
+#ifdef IMPLICIT_EXTERN_C
       if (c_header_level && --c_header_level == 0)
 	{
 	  if (LINEMAP_SYSP (new_map) == 2)
Index: cp/decl.c
===================================================================
--- cp/decl.c	(revision 188725)
+++ cp/decl.c	(working copy)
@@ -977,7 +977,7 @@ decls_match (tree newdecl, tree olddecl)
 		&& DECL_EXTERN_C_P (olddecl)))
 	return 0;
 
-#ifdef NO_IMPLICIT_EXTERN_C
+#ifndef IMPLICIT_EXTERN_C
       /* A new declaration doesn't match a built-in one unless it
 	 is also extern "C".  */
       if (DECL_IS_BUILTIN (olddecl)
@@ -999,7 +999,7 @@ decls_match (tree newdecl, tree olddecl)
 	{
 	  if (!prototype_p (f2) && DECL_EXTERN_C_P (olddecl)
 	      && (DECL_BUILT_IN (olddecl)
-#ifndef NO_IMPLICIT_EXTERN_C
+#ifdef IMPLICIT_EXTERN_C
 		  || (DECL_IN_SYSTEM_HEADER (newdecl) && !DECL_CLASS_SCOPE_P (newdecl))
 		  || (DECL_IN_SYSTEM_HEADER (olddecl) && !DECL_CLASS_SCOPE_P (olddecl))
 #endif
@@ -1009,7 +1009,7 @@ decls_match (tree newdecl, tree olddecl)
 	      if (p1 == void_list_node)
 		TREE_TYPE (newdecl) = TREE_TYPE (olddecl);
 	    }
-#ifndef NO_IMPLICIT_EXTERN_C
+#ifdef IMPLICIT_EXTERN_C
 	  else if (!prototype_p (f1)
 		   && (DECL_EXTERN_C_P (olddecl)
 		       && DECL_IN_SYSTEM_HEADER (olddecl)
Index: cp/parser.c
===================================================================
--- cp/parser.c	(revision 188725)
+++ cp/parser.c	(working copy)
@@ -16993,7 +16993,7 @@ cp_parser_parameter_declaration_clause (
   else if (token->type == CPP_CLOSE_PAREN)
     /* There are no parameters.  */
     {
-#ifndef NO_IMPLICIT_EXTERN_C
+#ifdef IMPLICIT_EXTERN_C
       if (in_system_header && current_class_type == NULL
 	  && current_lang_name == lang_name_c)
 	return NULL_TREE;
Index: config/alpha/alpha.h
===================================================================
--- config/alpha/alpha.h	(revision 188725)
+++ config/alpha/alpha.h	(working copy)
@@ -1097,6 +1097,3 @@ extern long alpha_auto_offset;
 
 /* By default, turn on GDB extensions.  */
 #define DEFAULT_GDB_EXTENSIONS 1
-
-/* The system headers under Alpha systems are generally C++-aware.  */
-#define NO_IMPLICIT_EXTERN_C
Index: config/s390/tpf.h
===================================================================
--- config/s390/tpf.h	(revision 188725)
+++ config/s390/tpf.h	(working copy)
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3.  
 #define ASM_APP_ON "#APP\n"
 #undef ASM_APP_OFF
 #define ASM_APP_OFF "#NO_APP\n"
-#define NO_IMPLICIT_EXTERN_C
 #define TARGET_POSIX_IO
 
 #undef  SIZE_TYPE
Index: config/spu/spu.h
===================================================================
--- config/spu/spu.h	(revision 188725)
+++ config/spu/spu.h	(working copy)
@@ -518,8 +518,6 @@ do {									\
 
 #define FUNCTION_MODE QImode
 
-#define NO_IMPLICIT_EXTERN_C 1
-
 /* Canonicalize a comparison from one we don't have to one we do have.  */
 #define CANONICALIZE_COMPARISON(CODE,OP0,OP1) \
   do {                                                                    \
Index: config/sparc/sp64-elf.h
===================================================================
--- config/sparc/sp64-elf.h	(revision 188725)
+++ config/sparc/sp64-elf.h	(working copy)
@@ -29,9 +29,6 @@ along with GCC; see the file COPYING3.  
 #undef SPARC_DEFAULT_CMODEL
 #define SPARC_DEFAULT_CMODEL CM_EMBMEDANY
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* __svr4__ is used by the C library (FIXME) */
 #undef CPP_SUBTARGET_SPEC
 #define CPP_SUBTARGET_SPEC "-D__svr4__"
Index: config/sparc/sp-elf.h
===================================================================
--- config/sparc/sp-elf.h	(revision 188725)
+++ config/sparc/sp-elf.h	(working copy)
@@ -18,9 +18,6 @@ You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* It's safe to pass -s always, even if -g is not used.  */
 #undef ASM_SPEC
 #define ASM_SPEC \
Index: config/vx-common.h
===================================================================
--- config/vx-common.h	(revision 188725)
+++ config/vx-common.h	(working copy)
@@ -18,10 +18,6 @@ You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* VxWorks headers are C++-aware.  */
-#undef  NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
-
 /* Most of these will probably be overridden by subsequent headers.  We
    undefine them here just in case, and define VXWORKS_ versions of each,
    to be used in port-specific vxworks.h.  */
Index: config/i386/cygming.h
===================================================================
--- config/i386/cygming.h	(revision 188725)
+++ config/i386/cygming.h	(working copy)
@@ -355,9 +355,6 @@ do {						\
 #endif
 #endif
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #undef PROFILE_HOOK
 #define PROFILE_HOOK(LABEL)						\
   if (MAIN_NAME_P (DECL_NAME (current_function_decl)))			\
Index: config/i386/djgpp.h
===================================================================
--- config/i386/djgpp.h	(revision 188725)
+++ config/i386/djgpp.h	(working copy)
@@ -21,9 +21,6 @@ along with GCC; see the file COPYING3.  
 /* Support generation of DWARF2 debugging info.  */
 #define DWARF2_DEBUGGING_INFO 1
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #undef BSS_SECTION_ASM_OP
 #define BSS_SECTION_ASM_OP "\t.section\t.bss"
 
Index: config/i386/i386-interix.h
===================================================================
--- config/i386/i386-interix.h	(revision 188725)
+++ config/i386/i386-interix.h	(working copy)
@@ -234,9 +234,6 @@ extern void i386_pe_unique_section PARAM
 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
   asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN))
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* External function declarations.  */
 extern void i386_pe_record_external_function (tree, const char *);
 extern void i386_pe_declare_function_type (FILE *, const char *, int);
Index: config/i386/nto.h
===================================================================
--- config/i386/nto.h	(revision 188725)
+++ config/i386/nto.h	(working copy)
@@ -98,8 +98,6 @@ crti.o%s \
 #undef WCHAR_TYPE_SIZE
 #define WCHAR_TYPE_SIZE BITS_PER_WORD
 
-#define NO_IMPLICIT_EXTERN_C 1
-
 #define TARGET_POSIX_IO
 
 #undef DBX_REGISTER_NUMBER
Index: config/sol2.h
===================================================================
--- config/sol2.h	(revision 188725)
+++ config/sol2.h	(working copy)
@@ -199,9 +199,6 @@ along with GCC; see the file COPYING3.  
    produce the same format.  */
 #define NM_FLAGS "-png"
 
-/* The system headers under Solaris 2 are C++-aware since 2.0.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #define STDC_0_IN_SYSTEM_HEADERS 1
 
 /* Support Solaris-specific format checking for cmn_err.  */
Index: config/xtensa/elf.h
===================================================================
--- config/xtensa/elf.h	(revision 188725)
+++ config/xtensa/elf.h	(working copy)
@@ -21,9 +21,6 @@ along with GCC; see the file COPYING3.  
 
 #define TARGET_SECTION_TYPE_FLAGS xtensa_multibss_section_type_flags
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #undef ASM_APP_ON
 #define ASM_APP_ON "#APP\n"
 
Index: config/stormy16/stormy16.h
===================================================================
--- config/stormy16/stormy16.h	(revision 188725)
+++ config/stormy16/stormy16.h	(working copy)
@@ -504,5 +504,3 @@ enum reg_class
 #define Pmode HImode
 
 #define FUNCTION_MODE HImode
-
-#define NO_IMPLICIT_EXTERN_C
Index: config/lm32/uclinux-elf.h
===================================================================
--- config/lm32/uclinux-elf.h	(revision 188725)
+++ config/lm32/uclinux-elf.h	(working copy)
@@ -22,10 +22,6 @@
 /* elfos.h should have already been included.  Now just override
    any conflicting definitions and add any extras.  */
 
-/* Do not assume anything about header files.  */
-#undef NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
-
 /* The GNU C++ standard library requires that these macros be defined.  */
 #undef CPLUSPLUS_CPP_SPEC
 #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
Index: config/lm32/lm32.h
===================================================================
--- config/lm32/lm32.h	(revision 188725)
+++ config/lm32/lm32.h	(working copy)
@@ -539,8 +539,4 @@ do {                                    
 
 #define FUNCTION_MODE SImode
 
-#ifndef NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
-#endif
-
 #define STORE_FLAG_VALUE 1
Index: config/lynx.h
===================================================================
--- config/lynx.h	(revision 188725)
+++ config/lynx.h	(working copy)
@@ -166,12 +166,6 @@ along with GCC; see the file COPYING3.  
 # define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
 #endif
 
-/* We have C++ support in our system headers.  */
-
-#ifndef NO_IMPLICIT_EXTERN_C
-# define NO_IMPLICIT_EXTERN_C
-#endif
-
 #ifndef TARGET_POSIX_IO
 # define TARGET_POSIX_IO
 #endif
Index: config/cris/cris.h
===================================================================
--- config/cris/cris.h	(revision 188725)
+++ config/cris/cris.h	(working copy)
@@ -1066,8 +1066,6 @@ enum cris_pic_symbol_type
 
 #define FUNCTION_MODE QImode
 
-#define NO_IMPLICIT_EXTERN_C
-
 /*
  * Local variables:
  * eval: (c-set-style "gnu")
Index: config/netbsd.h
===================================================================
--- config/netbsd.h	(revision 188725)
+++ config/netbsd.h	(working copy)
@@ -158,10 +158,6 @@ along with GCC; see the file COPYING3.  
 #undef TARGET_POSIX_IO
 #define TARGET_POSIX_IO
 
-/* Don't assume anything about the header files.  */
-#undef  NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C    1
-
 /* Define some types that are the same on all NetBSD platforms,
    making them agree with <machine/ansi.h>.  */
 
Index: config/gnu-user.h
===================================================================
--- config/gnu-user.h	(revision 188725)
+++ config/gnu-user.h	(working copy)
@@ -27,9 +27,6 @@ a copy of the GCC Runtime Library Except
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #undef ASM_APP_ON
 #define ASM_APP_ON "#APP\n"
 
Index: config/ia64/hpux.h
===================================================================
--- config/ia64/hpux.h	(revision 188725)
+++ config/ia64/hpux.h	(working copy)
@@ -202,9 +202,6 @@ do {								\
 #define LIBGCC2_HAS_TF_MODE 1
 #define TF_SIZE 113
 
-/* HP-UX headers are C++-compatible.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* HP-UX uses PROFILE_HOOK instead of FUNCTION_PROFILER but we need a
    FUNCTION_PROFILER defined because its use is not ifdefed.  When using
    PROFILE_HOOK, the profile call comes after the prologue.  */
Index: config/rtems.h
===================================================================
--- config/rtems.h	(revision 188725)
+++ config/rtems.h	(working copy)
@@ -17,10 +17,6 @@ You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* The system headers under RTEMS are C++-aware.  */
-#undef NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
-
 /*
  * Dummy start/end specification to let linker work as
  * needed by autoconf scripts using this compiler.
Index: config/rs6000/sysv4.h
===================================================================
--- config/rs6000/sysv4.h	(revision 188725)
+++ config/rs6000/sysv4.h	(working copy)
@@ -25,10 +25,6 @@
    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* Header files should be C++ aware in general.  */
-#undef  NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C
-
 /* Yes!  We are ELF.  */
 #define	TARGET_OBJECT_FORMAT OBJECT_ELF
 
Index: config/darwin.h
===================================================================
--- config/darwin.h	(revision 188725)
+++ config/darwin.h	(working copy)
@@ -45,9 +45,6 @@ see the files COPYING3 and COPYING.RUNTI
 #define DARWIN_X86 0
 #define DARWIN_PPC 0
 
-/* Don't assume anything about the header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* Suppress g++ attempt to link in the math library automatically. */
 #define MATH_LIBRARY ""
 
Index: config/arm/uclinux-elf.h
===================================================================
--- config/arm/uclinux-elf.h	(revision 188725)
+++ config/arm/uclinux-elf.h	(working copy)
@@ -44,9 +44,6 @@
     }						\
   while (false)
 
-/* Do not assume anything about header files.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* The GNU C++ standard library requires that these macros be defined.  */
 #undef CPLUSPLUS_CPP_SPEC
 #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
Index: config/pa/pa-hpux.h
===================================================================
--- config/pa/pa-hpux.h	(revision 188725)
+++ config/pa/pa-hpux.h	(working copy)
@@ -103,10 +103,6 @@ along with GCC; see the file COPYING3.  
   "%{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
 #endif
 
-/* hpux8 and later have C++ compatible include files, so do not
-   pretend they are `extern "C"'.  */
-#define NO_IMPLICIT_EXTERN_C
-
 /* hpux11 and earlier don't have fputc_unlocked, so we must inhibit the
    transformation of fputs_unlocked and fprintf_unlocked to fputc_unlocked.  */
 #define DONT_HAVE_FPUTC_UNLOCKED
Index: config/mips/elf.h
===================================================================
--- config/mips/elf.h	(revision 188725)
+++ config/mips/elf.h	(working copy)
@@ -47,5 +47,3 @@ along with GCC; see the file COPYING3.  
 
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
-
-#define NO_IMPLICIT_EXTERN_C 1
Index: config/freebsd.h
===================================================================
--- config/freebsd.h	(revision 188725)
+++ config/freebsd.h	(working copy)
@@ -64,10 +64,6 @@ along with GCC; see the file COPYING3.  
 #undef  OBJECT_FORMAT_ELF
 #define OBJECT_FORMAT_ELF
 
-/* Don't assume anything about the header files.  */
-#undef  NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C	1
-
 /* Follow FreeBSD's standard headers (<sys/_types.h> etc...).  */
 
 #undef  WCHAR_TYPE
Index: config/v850/v850.h
===================================================================
--- config/v850/v850.h	(revision 188725)
+++ config/v850/v850.h	(working copy)
@@ -925,10 +925,4 @@ extern tree GHS_current_section_names [(
 
 #define TARGET_ASM_INIT_SECTIONS v850_asm_init_sections
 
-/* Define this so that the cc1plus will not think that system header files
-   need an implicit 'extern "C" { ... }' assumed.  This breaks testing C++
-   in a build directory where the libstdc++ header files are found via a
-   -isystem <path-to-build-dir>.  */
-#define NO_IMPLICIT_EXTERN_C
-
 #endif /* ! GCC_V850_H */
Index: config/mmix/mmix.h
===================================================================
--- config/mmix/mmix.h	(revision 188725)
+++ config/mmix/mmix.h	(working copy)
@@ -833,8 +833,6 @@ typedef struct { int regs; int lib; } CU
 
 #define FUNCTION_MODE QImode
 
-#define NO_IMPLICIT_EXTERN_C
-
 /* These are checked.  */
 #define DOLLARS_IN_IDENTIFIERS 0
 #define NO_DOLLAR_IN_LABEL
Index: config/bfin/elf.h
===================================================================
--- config/bfin/elf.h	(revision 188725)
+++ config/bfin/elf.h	(working copy)
@@ -70,5 +70,3 @@ asm (TEXT_SECTION_ASM_OP);
 #undef SUBTARGET_DRIVER_SELF_SPECS
 #define SUBTARGET_DRIVER_SELF_SPECS \
      "%{mfdpic:-msim} %{mid-shared-library:-msim}"
-
-#define NO_IMPLICIT_EXTERN_C
Index: config/sparc/openbsd64.h
===================================================================
--- config/sparc/openbsd64.h	(revision 188725)
+++ config/sparc/openbsd64.h	(working copy)
@@ -44,8 +44,8 @@ along with GCC; see the file COPYING3.  
 #undef CPP_SUBTARGET_SPEC
 #define CPP_SUBTARGET_SPEC ""
 
-/* Inherited from sp64-elf.  */
-#undef NO_IMPLICIT_EXTERN_C
+/* Not all header files are C++-compatible.  */
+#define IMPLICIT_EXTERN_C
 
 #undef ASM_SPEC
 #define ASM_SPEC "\
