Skip to content
Snippets Groups Projects
  • Zack Weinberg's avatar
    84b8b0e0
    c-common.h (has_c_linkage): New interface. · 84b8b0e0
    Zack Weinberg authored
    	* c-common.h (has_c_linkage): New interface.
    	* c-cppbuiltin.c: Include target.h.
    	(c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
    	__PRAGMA_EXTERN_PREFIX when appropriate.
    	* c-pragma.c: Include target.h.
    	Document clarified semantics of symbol-renaming #pragmas.
    	(handle_pragma_redefine_extname, handle_pragma_extern_prefix)
    	(maybe_apply_renaming_pragma): Rewrite according to clarified
    	semantics.  Always recognize, but do not necessarily execute.
    	(init_pragma): Unconditionally register symbol-renaming pragmas.
    	* system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME
    	and HANDLE_PRAGMA_EXTERN_PREFIX.
    	* target.h (struct gcc_target): Add handle_pragma_redefine_extname
    	and handle_pragma_extern_prefix flags.
    	* target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
    	and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX.
    	* Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies.
    	* config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,
    	not HANDLE_PRAGMA_REDEFINE_EXTNAME.
    	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME.
    	(TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
    	* config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
    	not HANDLE_PRAGMA_EXTERN_PREFIX.
    	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX.
    	* doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
    	into one section "Symbol-Renaming Pragmas"; clarify; document
    	adjusted semantics.
    
    	* builtins.c (expand_builtin): Do not issue error for a builtin
    	with no special case code and no DECL_ASSEMBLER_NAME; just do the
    	library call.
    	* c-decl.c (builtin_function): Don't call make_decl_rtl.
    	* c-objc-common.c (has_c_linkage): Stub implementation.
    	* cgraphunit.c (cgraph_expand_function)
    	(cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.
    
    cp:
    	* cp-lang.c (has_c_linkage): Implement.
    
    	* cp-tree.h (set_mangled_name_for_decl): Don't prototype.
    	* decl.c (duplicate_decls): Use COPY_DECL_RTL.
    	(builtin_function_1): Don't call make_decl_rtl.
    	(build_cp_library_fn): Don't call set_mangled_name_for_decl.
    	(grokvardecl): Don't call mangle_decl.
    	* except.c (nothrow_libfn_p): Look at DECL_NAME, not
    	DECL_ASSEMBLER_NAME.
    	* method.c (set_mangled_name_for_decl): Delete.
    	* name-lookup.c (pushdecl): When a local extern shadows a
    	file-scope declaration of the same object, give both DECLs the
    	same DECL_UID.
    	* typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
    	on DECL_ASSEMBLER_NAME.
    
    testsuite:
    	* g++.dg/expr/enum1.C, g++.dg/opt/const3.C: Declare abort with
    	extern "C".
    	* g++.dg/other/pragma-re-1.C: Add comments.
    
    From-SVN: r83405
    84b8b0e0
    History
    c-common.h (has_c_linkage): New interface.
    Zack Weinberg authored
    	* c-common.h (has_c_linkage): New interface.
    	* c-cppbuiltin.c: Include target.h.
    	(c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
    	__PRAGMA_EXTERN_PREFIX when appropriate.
    	* c-pragma.c: Include target.h.
    	Document clarified semantics of symbol-renaming #pragmas.
    	(handle_pragma_redefine_extname, handle_pragma_extern_prefix)
    	(maybe_apply_renaming_pragma): Rewrite according to clarified
    	semantics.  Always recognize, but do not necessarily execute.
    	(init_pragma): Unconditionally register symbol-renaming pragmas.
    	* system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME
    	and HANDLE_PRAGMA_EXTERN_PREFIX.
    	* target.h (struct gcc_target): Add handle_pragma_redefine_extname
    	and handle_pragma_extern_prefix flags.
    	* target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
    	and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX.
    	* Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies.
    	* config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,
    	not HANDLE_PRAGMA_REDEFINE_EXTNAME.
    	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME.
    	(TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
    	* config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
    	not HANDLE_PRAGMA_EXTERN_PREFIX.
    	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX.
    	* doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
    	into one section "Symbol-Renaming Pragmas"; clarify; document
    	adjusted semantics.
    
    	* builtins.c (expand_builtin): Do not issue error for a builtin
    	with no special case code and no DECL_ASSEMBLER_NAME; just do the
    	library call.
    	* c-decl.c (builtin_function): Don't call make_decl_rtl.
    	* c-objc-common.c (has_c_linkage): Stub implementation.
    	* cgraphunit.c (cgraph_expand_function)
    	(cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.
    
    cp:
    	* cp-lang.c (has_c_linkage): Implement.
    
    	* cp-tree.h (set_mangled_name_for_decl): Don't prototype.
    	* decl.c (duplicate_decls): Use COPY_DECL_RTL.
    	(builtin_function_1): Don't call make_decl_rtl.
    	(build_cp_library_fn): Don't call set_mangled_name_for_decl.
    	(grokvardecl): Don't call mangle_decl.
    	* except.c (nothrow_libfn_p): Look at DECL_NAME, not
    	DECL_ASSEMBLER_NAME.
    	* method.c (set_mangled_name_for_decl): Delete.
    	* name-lookup.c (pushdecl): When a local extern shadows a
    	file-scope declaration of the same object, give both DECLs the
    	same DECL_UID.
    	* typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
    	on DECL_ASSEMBLER_NAME.
    
    testsuite:
    	* g++.dg/expr/enum1.C, g++.dg/opt/const3.C: Declare abort with
    	extern "C".
    	* g++.dg/other/pragma-re-1.C: Add comments.
    
    From-SVN: r83405
java NaN GiB