Commit Graph

263 Commits

Author SHA1 Message Date
Zack Weinberg
5d709b0013 c-common.h (struct c_fileinfo): Comment moved here from cp-tree.h.
* c-common.h (struct c_fileinfo): Comment moved here from cp-tree.h.
	(extract_interface_info): Delete prototype.
	* c-decl.c (extract_interface_info): Delete stub.
	* c-lex.c (get_fileinfo): Initialize file_info_tree here, if
	it's not already been done ...
	(init_c_lex): ... not here.
	(fe_file_change): Don't call extract_interface_info.
cp:
	* cp-tree.h (interface_only, interface_unknown): Delete declarations;
	comment explaining them moved to c-common.h.
	* lex.c (interface_only, interface_unknown, extract_interface_info):
	Delete definitions.
	(cxx_finish): Don't reset interface_unknown.
	(handle_pragma_interface): Don't set interface_only and
	interface_unknown; just the like-named fields in finfo.
	(handle_pragma_implementation): Adjust comment.
	* decl2.c (cp_finish_file): Don't reset interface_only and
	interface_unknown.
	* method.c (synthesize_method): Don't reset interface_unknown or
	call extract_interface_info.
	* pt.c (pop_tinst_level): Don't call extract_interface_info.
	* decl.c (start_cleanup_fn): Don't save or restore interface_only
	and interface_unknown.
	(make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
	and use the result instead of the interface_only/interface_unknown
	globals.
	(start_preparsed_function): Likewise.
	* lex.c (cxx_make_type): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	(expand_body): Don't call extract_interface_info.

From-SVN: r87329
2004-09-10 23:56:31 +00:00
Ziemowit Laski
a45bcfb2d0 c-common.h (objc_is_id, [...]): New prototypes.
[gcc/ChangeLog]
2004-09-03  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (objc_is_id, objc_declare_alias, objc_declare_class,
	objc_declare_protocols, objc_build_message_expr,
	objc_finish_message_expr, objc_build_selector_expr,
	objc_build_protocol_expr, objc_build_encode_expr,
	objc_build_string_object, objc_get_protocol_qualified_type,
	objc_get_class_reference, objc_get_class_ivars,
	objc_start_class_interface, objc_start_category_interface,
	objc_start_protocol, objc_continue_interface, objc_finish_interface,
	objc_start_class_implementation, objc_start_category_implementation,
	objc_continue_implementation, objc_finish_implementation,
	objc_set_visibility, objc_set_method_type, objc_build_method_signature,
	objc_add_method_declaration, objc_start_method_definition,
	objc_finish_method_definition, objc_add_instance_variable,
	objc_build_keyword_decl, objc_build_throw_stmt, objc_begin_try_stmt,
	objc_finish_try_stmt, objc_begin_catch_clause,
	objc_finish_catch_clause, objc_build_finally_clause,
	objc_build_synchronized, objc_static_init_needed_p,
	objc_generate_static_init_call): New prototypes.

From-SVN: r87046
2004-09-03 19:04:05 +00:00
Ziemowit Laski
bc09584679 c-common.h (lookup_interface): Remove prototype.
[gcc/ChangeLog]
2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (lookup_interface): Remove prototype.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.
	(get_current_scope): Rename to objc_get_current_scope.
	* c-decl.c (get_current_scope): Rename to objc_get_current_scope.
	* c-parse.in (parmlist_or_identifiers_1): Get rid of unused variable.
	(yylexname): Call objc_is_class_name() instead of is_class_name().
	* c-typeck.c (build_external_ref): Call objc_lookup_ivar()
	instead of lookup_objc_ivar().
	* stub-objc.c (lookup_interface): Remove stub.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.

[gcc/objc/ChangeLog]
2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* objc-act.c (lookup_interface): Make function 'static' and add a
	local prototype.
	(objc_check_decl, get_class_reference, objc_declare_alias,
	objc_declare_class, objc_is_object_ptr): Call objc_is_class_name()
	instead of is_class_name().
	(get_super_receiver, objc_clear_super_receiver): Call
	objc_get_current_scope() instead of get_current_scope().
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.

From-SVN: r86879
2004-09-01 07:55:39 +00:00
Nathan Sidwell
4094f4d2c4 c-common.c (c_sizeof_or_alignof_type): Use gcc_assert.
* c-common.c (c_sizeof_or_alignof_type): Use gcc_assert.
	(handle_visibility_attribute, c_determine_visibility): Likewise.
	* c-common.h (my_friendly_assert): Remove.
	* cp/cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.

From-SVN: r86762
2004-08-30 12:18:31 +00:00
Ziemowit Laski
e5a002e353 c-common.h: Update comments about ObjC/ObjC++ entry points.
[gcc/ChangeLog]
2004-08-28  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h: Update comments about ObjC/ObjC++ entry points.
	(objc_is_reserved_word): New prototype.
	(get_current_scope, objc_mark_locals_volatile): Move prototypes to
	separate section; these are call-backs.
	* c-lex.c (c_lex_with_flags): Call objc_is_reserved_word() to detect
	ObjC/ObjC++ "@" keywords.
	* c-tree.h (get_current_scope, objc_mark_locals_volatile): Remove
	prototypes; they already live in c-common.h.
	* stub-objc.c: Update copyright notice.
	(objc_is_reserved_word): New stub.

[gcc/cp/ChangeLog]
2004-08-28  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
	CXX_AND_OBJCXX_OBJS.
	(CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
	separately on the link line.

[gcc/objc/ChangeLog]
2004-08-28  Ziemowit Laski  <zlaski@apple.com>

	* objc-act.c (objc_is_reserved_word): New function.

From-SVN: r86702
2004-08-28 20:58:56 +00:00
Jason Merrill
40aac94801 re PR c++/13684 (local static object variable constructed once but ctors and dtors called multiple times on same memory when called in multiple threads)
PR c++/13684
        * cp/decl.c (expand_static_init): Use thread-safety API.
        (register_dtor_fn): Return the call, don't expand it.
        * cp/tree.c (add_stmt_to_compound): New fn.
        (stabilize_call): Use it.
        * gimplify.c (gimplify_cleanup_point_expr): Handle CLEANUP_EH_ONLY.
        (gimple_push_cleanup): Add eh_only parm.
        (gimplify_target_expr): Pass it.
        * c.opt (-fno-threadsafe-statics): New option.
        * c-opts.c (c_common_handle_option): Handle it.
        * c-common.h (flag_threadsafe_statics): Declare it.
        * c-common.c (flag_threadsafe_statics): Record it.
        * doc/invoke.texi: Document it.
        * tsystem.h (_GNU_SOURCE): Define.
        * gthr-posix.h (__gthread_recursive_mutex_t): New typedef.
        (__GTHREAD_RECURSIVE_MUTEX_INIT): New macro.
        (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): New macro.
        (__gthread_recursive_mutex_init_function): New fn.
        (__gthread_recursive_mutex_lock): New fn.
        (__gthread_recursive_mutex_trylock): New fn.
        (__gthread_recursive_mutex_unlock): New fn.
        * gthr-solaris.h, gthr-single.h, gthr-dce.h: Likewise.
        * gthr-win32.h, gthr-vxworks.h: Likewise.
        * gthr.h: Document.

        * libsupc++/guard.cc (static_mutex): Internal class implementing a
        recursive mutex which controls initialization of local statics.
        (__gnu_cxx::recursive_init): New exception class.
        (__cxa_guard_acquire): Deal with locking and recursion detection.
        (acquire_1, __cxa_guard_abort, __cxa_guard_release): Likewise.

From-SVN: r86687
2004-08-27 22:33:54 -04:00
Richard Henderson
ee8a6a3ee5 c-typeck.c (build_offsetof): Remove.
* c-typeck.c (build_offsetof): Remove.
        * c-tree.h (build_offsetof): Remove.
        * c-common.c (fold_offsetof_1, fold_offsetof): New.
        * c-common.h (fold_offsetof): Declare.
        * c-parse.in (offsetof_base): New.
        (offsetof_member_designator): Use it.  Build references, not just
        a tree list.
        (primary): Use fold_offsetof, not build_offsetof.

From-SVN: r86651
2004-08-26 17:37:48 -07:00
Richard Henderson
525c6bf5a6 tree.c (staticp): Return the static object.
* tree.c (staticp): Return the static object.
        * tree.h (staticp): Update decl.
        * langhooks.h (struct lang_hooks): Change staticp return type to tree.
        * langhooks.c (lhd_staticp): Return NULL_TREE.
        * langhooks-def.h (lhd_staticp): Update decl.
        * c-common.c (c_staticp): Return the static object.
        * c-common.h (c_staticp): Update decl.

From-SVN: r86650
2004-08-26 17:27:24 -07:00
Richard Henderson
174283a3c2 c-common.h (STATEMENT_LIST_HAS_LABEL): New.
* c-common.h (STATEMENT_LIST_HAS_LABEL): New.
        * c-semantics.c (add_stmt): Set it.
        * c-decl.c (finish_decl): Use it to create a new BIND_EXPR
        before instantiating a variable sized type.

From-SVN: r85849
2004-08-11 21:09:57 -07:00
Mark Mitchell
b2ca370228 tree.c (handle_dll_attribute): Move here from i383/winnt.c.
* tree.c (handle_dll_attribute): Move here from i383/winnt.c.
	Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P.  Set
	DECL_VISIBLITY.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* tree.h (handle_dll_attribute): Declare.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* c-common.h (c_determine_visibility): Declare.
	* c-common.c (c_determine_visibility): New function.
	* c-decl.c (finish_decl): Use it.
	(finish_function): Likewise.
	* defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to
	zero, by default.  Use #if, not	#ifdef, to test it.
	* config/arm/arm.c (arm_attribute_table): Use
	handle_dll_attribute.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with
	#if.
	* config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1.
	* config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	to 1.
	* config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove.
	* config/i386/i386.c (ix86_attribute_table): Use
	handle_dll_attribute for dllimport/dllexport.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* config/i386/winnt.c (ix86_handle_dll_attribute): Remove.
	* config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it
	with #if.
	* config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* doc/extend.texi (dllexport): Clarify and correct documentation.
	(dllimport): Likewise.
	* doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention
	handle_dll_attribute.

	* decl.c (start_preparsed_function): Move determine_visibility
	call.
	* decl2.c (determine_visibility): Incorporate dllexport testing.

	* g++.dg/ext/visibility/assign1.C: Use scan-hidden and
	dg-require-visiblity.
	* g++.dg/ext/visibility/fvisibility-inlines-hidden.C: Likewise.
	* g++.dg/ext/visibility/fvisibility.C: Likewise.
	* g++.dg/ext/visibility/memfuncts.C: Likewise.
	* g++.dg/ext/visibility/new1.C: Likewise.
	* g++.dg/ext/visibility/pragma.C: Likewise.
	* g++.dg/ext/visibility/staticmemfuncts.C: Likewise.
	* g++.dg/ext/visibility/virtual.C: Likewise.
	* g++/dg/ext/visibility/visibility-1.C: Likewise.
	* g++/dg/ext/visibility/visibility-2.C: Likewise.
	* g++/dg/ext/visibility/visibility-3.C: Likewise.
	* g++/dg/ext/visibility/visibility-4.C: Likewise.
	* g++/dg/ext/visibility/visibility-5.C: Likewise.
	* g++/dg/ext/visibility/visibility-6.C: Likewise.
	* g++/dg/ext/visibility/visibility-7.C: Likewise.
	* g++/dg/ext/visibility/visibility-8.C: New test.
	* gcc.c-torture/compile/dll.x: Remove.
	* gcc.dg/dll-2.c: Use dg-require-dll
	* gcc.dg/visibility-10.c: New test.
	* lib/gcc-dg.exp (dg-require-dll): Add Symbian to list of targets
	supporting DLLs.
	* testsuite/lib/scanasm.exp (scan_hidden): New function.
	(scan_not_hidden): Likewise.

From-SVN: r85621
2004-08-06 02:03:29 +00:00
Geoffrey Keating
0e6df31e19 re PR c/14516 (-fleading-underscore does not work correctly for file static variables)
2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	PR 14516
	* c-common.c (c_expand_decl): Don't special-case static VAR_DECLs.
	* c-common.h (make_rtl_for_local_static): Delete.
	* c-decl.c (shadow_tag_warned): Clean up comment.
	(finish_decl): Clean up spacing.  Use set_user_assembler_name when
	appropriate.  Don't pass asmspec to rest_of_decl_compilation.
	* c-semantics.c (make_rtl_for_local_static): Delete.
	* expr.c (init_block_move_fn): Use set_user_assembler_name.
	(init_block_clear_fn): Likewise.
	* passes.c (rest_of_decl_compilation): Remove asmspec parameter,
	expect it to be in DECL_ASSEMBLER_NAME.  Update callers in many files.
	* toplev.h (rest_of_decl_compilation): Remove asmspec parameter.
	* tree.h (make_decl_rtl): Remove second parameter.
	(set_user_assembler_name): New.
	* varasm.c (set_user_assembler_name): New.
	(make_decl_rtl): Remove second parameter.  Update callers in many
	files.

Index: cp/ChangeLog
2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
	than passing it as a parameter to rest_of_decl_compilation.
	* decl2.c (grokfield): Use set_user_assembler_name.

From-SVN: r85593
2004-08-05 05:52:01 +00:00
Mark Mitchell
4684cd27fc c-common.h (lang_post_pch_load): New variable.
* c-common.h (lang_post_pch_load): New variable.
	* c-pch.c (lang_post_pch_load): Define it.
	(c_common_read_pch): Use it.
	* cgraphunit.c (record_call_1): Give the front end a chance to
	record additional needed entities when a variable is marked as
	needed.
	* tlink.c (recompile_files): Robustify.
	(scan_linker_output): If a symbol is assigned to a file,
	but after recompilation is not present there, issue an error
	message.

	* cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
	(lang_decl_flags): Narrow the width of "languages".  Add
	repo_available_p.
	(DECL_NEEDED_P): Remove.
	(FOR_EACH_CLONE): New macro.
	(DECL_REPO_AVAILABLE_P): Likewise.
	(DECL_TINFO_P): Likewise.
	(set_linkage_according_to_type): Declare.
	(import_export_vtable): Remove.
	(import_export_tinfo): Likewise.
	(mark_needed): New function.
	(decl_needed_p): Likewise.
	(note_vauge_linkage_fn): Likewise.
	(init_repo): Change prototype.
	(repo_template_used): Remove.
	(repo_template_instantiated): Likewise.
	(repo_emit_p): New function.
	(repo_export_class_p): Likewise.
	(no_linkage_check): Change prototype.
	* class.c (set_linkage_according_to_type): New function.
	(build_vtable): Use it.  Do not call import_export_vtable.  Set
	DECL_IGNORED_P if appropriate.
	* decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
	(make_rtL_for_nonlocal_decls): Check for template instantiations
	explicitly.
	(grokfndecl): Adjust call to no_linkage_check.
	(set_linkage_for_static_data_member): New function.
	(grokvardecl): Use it.  Adjust call to no_linkage_check.
	(grokdeclarator): Use set_linkage_for_static_data_member.
	* decl2.c (note_vague_linkage_fn): New function.
	(note_vague_linkage_var): Likewise.
	(finish_static_data_member_decl): Use it.
	(import_export_vtable): Remove.
	(import_export_class): Use repo_export_class_p.
	(var_finalized_p): Simplify.
	(maybe_emit_vtables): Simplify.
	(mark_needed): New function.
	(decl_needed_p): Likewise.
	(import_export_decl): Add documentation and consistency checks.
	Use repo_emit_p.  Handle virtual tables and RTTI information
	here.
	(import_export_tinfo): Remove.
	(write_out_vars): Call import_export_decl.
	(cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
	whenever one is.
	(finish_file): Use decl_needed_p.  Do not call import_export_decl
	for undefined static data members.  Do not warn about undefined
	inlines when using a repository.
	(mark_used): Use note_vague_linkage_fn.  Always defer template
	instantiations.
	* lex.c (cxx_init): Adjust call to init_repo.  Always set
	flag_unit_at_a-time.
	* method.c (synthesize_method): Remove unncessary
	import_export_decl call.
	(implicitly_declare_fn): Use set_linkage_according_to_type.
	* optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
	* pt.c (instantiate_class_template): Don't redundantly add classes
	to keyed_classes.  Don't call repo_template_used.
	(tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
	templates with internal linkage.
	(check_instantiated_args): Adjust call to no_linkage_check.
	(instantiate_template): Use FOR_EACH_CLONE.
	(mark_definable): New function.
	(mark_decl_instantiated): Use it.
	(do_decl_instantiation): Adjust tests for explicit instantiation
	after "extern template".
	(instantiate_class_member): Do not use repo_template_instantiated.
	(do_type_instantiation): Simplify.
	(instantiate_decl): Use mark_definable.  Check repo_emit_p.
	Simplify.
	* repo.c (repo_get_id): Remove.
	(original_repo): Remove.
	(IDENTIFIER_REPO_USED): Remove.
	(IDENTIFIER_REPO_CHOSEN): Remove.
	Remove all #if 0'd code.
	(repo_template_used): Remove.
	(repo_template_instantiated): Remove.
	(temporary_obstack_initialized_p): New variable.
	(init_repo): Register with lang_post_pch_load.  Avoid creating
	identifiers unnecessarily.  Don't use original_repo.  Close the
	file here.
	(reopen_repo_file_for_write): Not here.
	(finish_repo): Always write out a new repository file.
	(repo_emit_p): New function.
	(repo_export_class_p): Likewise.
	* rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
	(involves_incomplete_p): New function.
	(tinfo_base_init): Use it.
	(ptr_initializer): Remove non_public_ptr parameter.
	(ptm_initializer): Likewise.
	(get_pseudo_ti_init): Likewise.
	(unemitted_tinfo_decl_p): Remove.
	(emit_tinfo_decl): Use import_export_decl.
	* semantics.c (expand_body): Move updates of static_ctors and
	static_dtors to ...
	(expand_or_defer_fn): ... here.
	* tree.c (no_linkage_check): Add relaxed_p parameter.

	* g++.dg/abi/inline1.C: New test.
	* g++.dg/abi/local1-a.cc: Likewise.
	* g++.dg/abi/local1.C: Likewise.
	* g++.dg/abi/mangle11.C: Tweak location of warnings.
	* g++.dg/abi/mangle12.C: Likewise.
	* g++.dg/abi/mangle17.C: Likewise.
	* g++.dg/abi/mangle20-2.C: Likewise.
	* g++.dg/opt/interface1.C: Likewise.
	* g++.dg/opt/interface1.h: Likewise.
	* g++.dg/opt/interface1-a.cc: New test.
	* g++.dg/parse/repo1.C: New test.
	* g++.dg/template/repo1.C: Likewise.
	* g++.dg/warn/Winline-1.C: Likewise.
	* lib/gcc-dg.exp (gcc-dg-test-1): Fix -frepo handling.

From-SVN: r85309
2004-07-29 17:59:31 +00:00
Bernardo Innocenti
ea06b1666d c-common.h (c_staticp): Change return type from int to bool.
* c-common.h (c_staticp): Change return type from int to bool.
	* tree.c (staticp): Likewise.
	* langhooks.h (staticp): Likewise.

From-SVN: r85137
2004-07-25 04:50:57 +02:00
Steven Bosscher
a6c0a76c5f c-common.h (check_case_value): Remove prototype.
* c-common.h (check_case_value): Remove prototype.
        (c_add_case_label): Adjust prototype.
        * c-common.c (check_case_value): Make static.
        (check_case_bounds): New function.
        (c_add_case_label): Use it.  Take new argument orig_type.
        * c-typeck.c (struct c_switch): New orig_type field.
        (c_start_case): Set it.
        (do_case): Pass it to c_add_case_label.
        * expr.c (expand_expr_real_1): Don't warn for out-of-bounds
        cases from here.  Add the labels in reverse order.
        * stmt.c (struct case_node): Adjust comment.  Remove balance field.
        (add_case_node): Return nothing, don't check for duplicate cases.
        Insert new case nodes in a list, not in an AVL tree.
        (expand_end_case_type): Don't turn a case tree into a case list.
        (case_tree2list): Remove.
        * tree.h (add_case_node): Adjust prototype.

cp/
        * cp-tree.h (struct lang_decl_flags): Unify the template_info and
        thunk_alias, and the access and virtual_offset fields.
        (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
        * decl.c (finish_case_label): Update c_add_case_node call.

testsuite/
	* testsuite/gcc.dg/switch-warn-1.c: New test.
	* testsuite/gcc.dg/switch-warn-2.c: New test.
        * gcc.c-torture/compile/pr14730.c: Update

From-SVN: r84947
2004-07-20 09:57:13 +00:00
Joseph Myers
487a92fed2 c-tree.h (struct c_expr): Define.
* c-tree.h (struct c_expr): Define.
	(C_SET_EXP_ORIGINAL_CODE): Remove.
	(parser_build_binary_op, build_compound_expr): Update prototypes.
	* c-parse.in (%union): Add exprtype.
	(FUNC_NAME): Mark as ttype.
	(expr, expr_no_commas, cast_expr, unary_expr, primary): Change to
	exprtype.
	(expr): Update.  Define directly in terms of expr_no_commas
	instead of using nonnull_exprlist.
	(nonnull_exprlist, unary_expr, cast_expr, expr_no_commas, primary,
	offsetof_member_designator, typespec_nonreserved_nonattr, init,
	initval, designator, component_declarator,
	component_notype_declarator, enumerator, array_declarator,
	condition, exexpr, switch_statement, stmt_nocomp, stmt,
	nonnull_asm_operands, ivar_declarator, receiver): Update.  Don't
	set C_EXP_ORIGINAL_CODE.  Use TREE_NO_WARNING for assignments
	where appropriate.
	* c-common.h (C_EXP_ORIGINAL_CODE): Remove.
	* c-common.c (c_common_truthvalue_conversion): Don't check
	C_EXP_ORIGINAL_CODE.
	* c-typeck.c (parser_build_binary_op): Use c_expr structures.
	Don't use C_EXP_ORIGINAL_CODE.
	(default_conversion, default_function_array_conversion): Don't use
	C_EXP_ORIGINAL_CODE.  Preserve TREE_NO_WARNING.
	(internal_build_compound_expr): Merge into build_compound_expr.
	(build_compound_expr): Take two operands instead of a TREE_LIST.
	* objc/objc-act.c (get_super_receiver): Update calls to
	build_compound_expr.

cp:
	* typeck.c (build_modify_expr, build_x_modify_expr): Set
	TREE_NO_WARNING on assignments with an operator other than '='.

testsuite:
	* g++.dg/warn/Wparentheses-1.C, g++.dg/warn/Wparentheses-2.C,
	gcc.dg/Wparentheses-10.c: New tests.
	* gcc.dg/Wparentheses-5.c: Remove XFAILs.

From-SVN: r84911
2004-07-19 09:38:52 +01:00
Steven Bosscher
dae424695c md.texi (Processor pipeline description): Mention that the old pipeline description is deprecated.
* doc/md.texi (Processor pipeline description): Mention that
	the old pipeline description is deprecated.

	* config/rs6000/7450.md (automaton ppc7450): Split up, move
	mciu_7450 function unit to...
	(automaton ppc7450mciu): ...new automaton.

	* haifa-sched.c (insert_schedule_bubbles_p): Remove.
	(schedule_block): Don't consider inserting bubbles.
	(sched_init): Don't initialize DFA bubbles.
	* target-def.h (TARGET_SCHED_INIT_DFA_BUBBLES,
	TARGET_SCHED_DFA_BUBBLE): Remove.
	* target.h (init_dfa_bubbles, dfa_bubble): Remove hooks.
	* doc/tm.texi (TARGET_SCHED_INIT_DFA_BUBBLES,
	TARGET_SCHED_DFA_BUBBLE): Remove documentation.

	* stmt.c (conditional_context): Remove prototype.
	* tree.h (conditional_context): Remove.
	* tree-cfg.c (pre_insert_on_edge): Remove.

	* c-common.h (c_expand_asm_operands): Remove prototype.
	* c-typeck.c (c_expand_asm_operands): Remove.

cp/
	* typeck.c (c_expand_asm_operands): Remove.

From-SVN: r84411
2004-07-09 22:42:43 +00:00
Joseph Myers
9980154889 c-common.h (check_function_format): Remove first parameter.
* c-common.h (check_function_format): Remove first parameter.
	* c-format.c (format_check_context): Remove status.
	(check_format_info, check_format_info_main,
	maybe_read_dollar_number, avoid_dollar_number,
	finish_dollar_format_checking, check_format_types,
	check_function_format): Remove first parameter.  Don't use
	status_warning.
	(check_format_arg): Don't use status_warning.
	(status_warning): Remove.
	* c-common.c (check_function_arguments): Update call to
	check_function_format.

cp:
	* call.c (build_over_call), typeck.c (build_function_call): Update
	calls to check_function_format.

From-SVN: r83935
2004-06-30 23:28:02 +01:00
Richard Kenner
350fae6628 c-common.c (c_safe_from_p, [...]): Deleted.
2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

        * c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
        * c-common.def (DECL_STMT): Remove.
        * c-common.h (DECL_STMT_DECL): Deleted.
        (COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL.
        (c_safe_from_p, c_walk_subtrees): Deleted.
        * c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR.
        * c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
        * c-gimplify.c (gimplify_decl_stmt): Deleted.
        (gimplify_compound_literal_expr): Use DECL_EXPR_DECL
        and gimplify_and_add.
        (c_gimplify_expr, case DECL_EXPR): New case.
        (c_gimplify_expr, case DECL_STMT): Deleted.
        * c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
        (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
        * expr.c (safe_from_p, case 's'): New case.
        * gimplify.c (gimplify_decl_expr): New function.
        (gimplify_expr, case DECL_EXPR): New case.
        * tree-inline.c (walk_tree): Walk into all fields of a type and
        decl only if they are in a DECL_EXPR.
        (mark_local_for_remap_r): Minor code cleanup.
        * tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
        * tree.c (has_cleanups, case DECL_EXPR): New case.
        * tree.def (DECL_EXPR): New code.
        * tree.h (DECL_EXPR_DECL): New macro.

        * objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.

From-SVN: r83721
2004-06-26 17:11:23 -04:00
DJ Delorie
7619c085c5 c-common.h (warn_cast_qual, [...]): Remove explicit declarations.
* c-common.h (warn_cast_qual, warn_missing_format_attribute,
warn_pointer_arith, warn_missing_prototypes, warn_parentheses,
warn_missing_braces, warn_sign_compare, warn_long_long,
warn_redundant_decls, warn_float_equal, warn_char_subscripts,
warn_conversion, warn_format_y2k, warn_format_extra_args,
warn_format_zero_length, warn_format_nonliteral,
warn_format_security, mesg_implicit_function_declaration,
warn_bad_function_cast, warn_traditional,
warn_declaration_after_statement, warn_strict_prototypes,
warn_missing_declarations, warn_nested_externs,
warn_sequence_point, warn_init_self, warn_div_by_zero,
warn_implicit_int, warn_nonnull, warn_old_style_definition,
warn_selector, warn_undeclared_selector, warn_protocol,
warn_abi, warn_invalid_offsetof, warn_ctor_dtor_privacy,
warn_overloaded_virtual, warn_nonvdtor, warn_reorder,
warn_synth, warn_pmf2ptr, warn_ecpp, warn_sign_promo,
warn_old_style_cast, warn_nontemplate_friend,
warn_deprecated): Remove explicit declarations.
* c-common.c: Likewise, remove explicit definitions.
* c-opts.c: Likewise, remove explicit assignments.
* c.opts: Likewise, add implicit declare/define/assign.

From-SVN: r83680
2004-06-25 17:24:21 -04:00
Roger Sayle
d522060b39 c-common.c (expand_unordered_cmp): Delete.
* c-common.c (expand_unordered_cmp): Delete.
	(expand_tree_builtin): Delete.
	* c-common.h (expand_tree_builtin): Delete function prototype.
	* c-typeck.c (build_function_call): Don't call expand_tree_builtin.

	* call.c (build_cxx_call): Don't call expand_tree_builtin.  No
	longer take both "args" and "convert_args" as arguments.
	(build_op_delete_call): Update call to build_cxx_call.
	(build_over_call): Likewise, update call to build_cxx_call.
	* cp-tree.h (build_cxx_call): Update funtion prototype.
	* typeck.c (build_function_call): Don't call expand_tree_builtin.
	* rtti.c (throw_bad_cast): Update call to build_cxx_call.
	(throw_bad_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.

From-SVN: r83579
2004-06-24 05:26:07 +00:00
Geoffrey Keating
c0d578e68f c-opts.c (c_common_handle_option): Handle -fpch-preprocess.
2004-06-21  Geoffrey Keating  <geoffk@apple.com>

	* c-opts.c (c_common_handle_option): Handle -fpch-preprocess.
	* c-common.h (flag_pch_preprocess): Declare.
	(c_common_pch_pragma): Likewise.
	* c-common.c (flag_pch_preprocess): New.
	* c-pch.c (c_common_read_pch): Support -fpreprocess-only.
	(c_common_pch_pragma): New.
	* c-ppoutput.c (cb_read_pch): New.
	(init_pp_output): Support -fpch-preprocess.
	* c-pragma.c (init_pragma): Support #pragma GNUC pch_preprocess.
	* c.opt (fpch-preprocess): New.
	* gcc.c (cpp_options): When save-temps, pass -fpch-preprocess.
	* doc/cppopts.texi: Document -fpch-preprocess.
	* doc/invoke.texi (Precompiled Headers): Mention that
	-fpreprocessed is safe for PCH.  Mention that if an option is
	listed as safe that doesn't mean it does what you expect.

Index: gcc/testsuite/ChangeLog
2004-06-21  Geoffrey Keating  <geoffk@apple.com>

	* gcc.dg/pch/save-temps-1.c: New file.
	* gcc.dg/pch/save-temps-1.hs: New file.

Index: libcpp/ChangeLog
2004-06-21  Geoffrey Keating  <geoffk@apple.com>

	* files.c (should_stack_file): Correct swapped parameters to call
	to cb.read_pch.
	* pch.c (cpp_valid_state): Handle -fpreprocessed.

From-SVN: r83478
2004-06-22 06:51:56 +00:00
Richard Henderson
5088b05874 c-common.def (RETURN_STMT): Remove.
* c-common.def (RETURN_STMT): Remove.
        * c-common.h (RETURN_STMT_EXPR): Remove.
        (c_expand_return, build_return_stmt): Remove.
        (c_common_stmt_codes): Remove RETURN_STMT.
        * c-dump.c (dump_next_stmt): Remove.
        (c_dump_tree): Remove RETURN_STMT.
        * c-decl.c (finish_function): Use c_finish_return.
        * c-parse.in (stmt): Likewise.
        * c-gimplify.c (gimplify_return_stmt): Remove.
        (c_gimplify_expr): Remove RETURN_STMT.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-semantics.c (build_return_stmt): Remove.
        * c-tree.h (c_finish_return): Declare.
        * c-typeck.c (c_finish_return): Rename from c_expand_return.
        Return void.  Build RETURN_EXPR directly.
        * tree-dump.h (dump_next_stmt): Remove.
cp/
        * dump.c (cp_dump_tree): Don't use dump_next_stmt.
        * parser.c (cp_parser_jump_statement): Update commentary.
        * pt.c (tsubst_expr): Use RETURN_EXPR.
        * semantics.c (finish_return_stmt): Likewise.
        (finalize_nrv_r): Likewise.
        * typeck.c, typeck2.c: Update file start commentary.

From-SVN: r83461
2004-06-21 16:30:30 -07:00
Richard Henderson
3a5b9284da c-common.c (verify_sequence_points): Export.
* c-common.c (verify_sequence_points): Export.
        (c_expand_expr_stmt): Move to c-typeck.c.
        * c-common.h (c_expand_expr_stmt): Remove.
        (verify_sequence_points): Declare.
        * c-mudflap.c (mflang_flush_calls): Use c_finish_expr_stmt.
        * c-parse.in (for_init_stmt, stmt): Likewise.
        * c-tree.h (c_finish_expr_stmt): Declare.
        (c_tree_expr_nonnegative_p): Remove.
        * c-typeck.c (c_tree_expr_nonnegative_p): Remove.
        (build_conditional_expr, build_binary_op): Use tree_expr_nonnegative_p.
        (emit_side_effect_warnings): New.
        (c_finish_expr_stmt): Rename from c_expand_expr_stmt.  Use it.
        (c_finish_stmt_expr): Work without EXPR_STMT.  Handle eh regions.
        Use emit_side_effect_warnings.
        (push_cleanup): Copy STATEMENT_LIST_STMT_EXPR.
        * fold-const.c (tree_expr_nonnegative_p): Handle TARGET_EXPR.
        * gimplify.c (gimplify_modify_expr): Don't discard TARGET_EXPR
        with void initializer.
        (gimplify_target_expr): Handle void BIND_EXPR initializer.
        * tree-inline.c (estimate_num_insns_1): Fix type lookup for
        INIT_EXPR and MODIFY_EXPR.
        * objc/objc-act.c (build_module_descriptor): Use add_stmt
        instead of c_expand_expr_stmt.
cp/
        * semantics.c (finish_expr_stmt): Call verify_sequence_points.
testsuite/
        * gcc.dg/tree-ssa/20030714-1.c: Rename variables to avoid
        merging && to BIT_FIELD_REF.

From-SVN: r83429
2004-06-21 02:15:29 -07:00
Richard Henderson
543a0daa84 c-common.h (add_decl_stmt): Move to cp-tree.h.
* c-common.h (add_decl_stmt): Move to cp-tree.h.
        * c-decl.c (finish_decl): Don't use add_decl_stmt.
        * c-parse.in: Likewise.
        * c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR.
        (gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise.
        * c-semantics.c (add_decl_stmt): Move to cp/semantics.c.
cp/
        * cp-tree.h (add_decl_stmt): Declare.
        * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
        * semantics.c (maybe_cleanup_point_expr): New.
        (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
        finish_for_expr, finish_switch_cond): Use it.
        (finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.

From-SVN: r83409
2004-06-20 03:10:02 -07:00
Richard Henderson
5a5086621e c-common.def (IF_STMT, [...]): Move to cp-tree.def.
* c-common.def (IF_STMT, CLEANUP_STMT): Move to cp-tree.def.
        * c-common.h (IF_COND, THEN_CLAUSE, ELSE_CLAUSE, CLEANUP_BODY,
        CLEANUP_EXPR, CLEANUP_DECL): Move to cp-tree.h.
        (c_common_stmt_codes): Remove IF_STMT, CLEANUP_STMT.
        * c-dump.c (c_dump_tree): Move IF_STMT, CLEANUP_STMT to cp_dump_tree.
        * c-pretty-print.c (pp_c_statement): Similarly.
        * c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts,
        gimplify_if_stmt): Move to cp-gimplify.c.
        (c_genericize, c_gimplify_expr): Don't call them.
        * c-semantics.c (push_cleanup): Move to cp/semantics.c.
        * c-typeck.c (push_cleanup): New.
        (c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_finish_else,
        c_finish_if_stmt): Use COND_EXPR.
        * tree.h (CLEANUP_EH_ONLY): Update documentation.
cp/
        * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
        * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
        (cp_gimplify_expr): Call it.
        (gimplify_cleanup_stmt): Move from c-gimplify.c.
        (cp_genericize): New.
        * decl.c (finish_function): Call it.
        * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
        (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
        (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
        (cp_genericize): Declare.
        * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
        * dump.c (cp_dump_tree): Likewise.
        * semantics.c (push_cleanup): Move from c-semantics.c.

From-SVN: r83407
2004-06-20 02:18:13 -07:00
Zack Weinberg
84b8b0e04d c-common.h (has_c_linkage): New interface.
* 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
2004-06-20 08:34:54 +00:00
Richard Henderson
7c34ced1a2 c-common.c, c-common.h (lang_gimplify_stmt): Remove.
* c-common.c, c-common.h (lang_gimplify_stmt): Remove.
        * c-gimplify.c: Remove unnecessary prototypes.
        (c_gimplify_stmt): Merge into ...
        (c_gimplify_expr): ... here.  Don't play with prep_stmt.
        * c-semantics.c (prep_stmt): Remove.
        * gimplify.c (annotate_one_with_locus): Break out from ...
        (annotate_all_with_locus): ... here.
        (gimplify_expr): Add locus to expressions even if pre/post queues
        are not present.
cp/
        * cp-gimplify.c: Remove unnecessary prototypes.
        (cp_gimplify_stmt): Merge into ...
        (cp_gimplify_expr): ... here.  Move to end of file.  Handle
        stmts_are_full_exprs_p frobbing.
        * cp-tree.h (cp_gimplify_stmt): Remove.
        * pt.c (tsubst_expr): Merge prep_stmt and unify.
        * tree.c (init_tree): Don't set lang_gimplify_stmt.

From-SVN: r83397
2004-06-19 12:34:23 -07:00
Richard Henderson
093c715302 c-common.c (flag_objc_sjlj_exceptions): New.
* c-common.c (flag_objc_sjlj_exceptions): New.
	* c-common.h (flag_objc_sjlj_exceptions): Declare.
	* c-opts.c (c_common_handle_option): Set it.
	(c_common_post_options): Handle interation of different
	objective-c exception and runtime switches.
	* c-decl.c (c_eh_initialized_p): New.
	(finish_decl): Use it instead of local eh_initialized_p.
	* c-parse.in (nested_function, notype_nested_function): Record
	the result of compstmt.
	(compstmt_or_error): Likewise.
	(compstmt): Don't add_stmt the result.
	(stmt): Don't return anything.  Rewrite objc try and sync rules.
	(objc_try_stmt, objc_catch_list): Remove.
	(objc_catch_block, objc_finally_block): Remove.
	(objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
	(objc_try_catch_clause, objc_finally_clause): New.
	(objc_try_catch_stmt): Rewrite.
	* c-tree.h (c_eh_initialized_p): Declare.
	* c-opt (fobjc-sjlj-exceptions): New.
	* except.c (output_function_exception_table): Don't call cgraph
	on non-decls.
	* objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR,
	UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack,
	catch_count_stack, exc_binding_stack, if_nesting_count,
	blk_nesting_count, objc_enter_block, objc_exit_block,
	objc_declare_variable, val_stack_push, val_stack_pop,
	objc_build_try_enter_fragment, objc_build_extract_expr,
	objc_build_try_exit_fragment, objc_build_extract_fragment,
	objc_build_try_prologue, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue,
	objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
	objc_build_synchronized_epilogue): Remove.
	(objc_create_temporary_var, struct objc_try_context, cur_try_context,
	objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
	next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
	next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
	next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
	objc_begin_catch_clause, objc_finish_catch_clause,
	objc_build_finally_clause, objc_finish_try_stmt,
	objc_build_synchronized): New.
	(objc_is_object_id, objc_is_class_id): New.
	(objc_comptypes): Use them.
	(build_next_objc_exception_stuff): Break NeXT sjlj out from
	build_objc_exception_stuff.
	(synth_module_prologue): Update to match.
	(objc_build_throw_stmt): Use cur_try_context to decide if
	we're in a @catch.
	* objc/objc-act.h: Update prototypes.
	(OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.
testsuite/
        * objc.dg/sync-1.m: New.
        * objc.dg/try-catch-1.m: Don't force next runtime.
        * objc.dg/try-catch-3.m, objc.dg/try-catch-4.m: Likewise.
        * objc.dg/try-catch-2.m: Likewise.  Enable everywhere.  Remove
        shadowed catch clause.
        * objc.dg/try-catch-5.m: New.

From-SVN: r83332
2004-06-17 18:20:53 -07:00
Richard Henderson
5882f0f31a c-common.def (COMPOUND_STMT): Remove.
* c-common.def (COMPOUND_STMT): Remove.
        * c-common.c (finish_fname_decls): Don't look through it.
        * c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
        * c-common.h (COMPOUND_BODY): Remove.
        (c_common_stmt_codes): Remove COMPOUND_STMT.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * tree.h (DECL_SAVED_TREE): Update commentary.
        * doc/c-tree.texi (ASM_EXPR): Rename from ASM_STMT.
        (CASE_LABEL_EXPR): Rename from CASE_LABEL.
        (GOTO_EXPR): Rename from GOTO_STMT.
        (GOTO_FAKE_P): Remove.
        (COMPOUND_STMT): Remove.
        (HANDLER): Update wrt COMPOUND_STMT.
        (STMT_EXPR): Likewise.
        (LABEL_EXPR): Rename from LABEL_STMT.
        (SCOPE_STMT): Remove.
        * objc/objc-act.c (objc_build_try_catch_finally_stmt): Don't look
        through COMPOUND_STMT.
cp/
        * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
        (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
        * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
        of CTOR_INITIALIZER ...
        (pp_cxx_statement): ... here.
        * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
        (finish_function): Use alloc_stmt_list to zap entire function.
        * parser.c (cp_parser_compound_statement): Update commentary.
        * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
        * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
        (finish_stmt_expr): Don't look through COMPOUND_STMT.

From-SVN: r83281
2004-06-16 18:24:06 -07:00
Richard Henderson
9e51cf9da4 c-common.h (c_begin_if_stmt, [...]): Remove decls.
* c-common.h (c_begin_if_stmt, c_begin_while_stmt,
        c_finish_while_stmt_cond): Remove decls.
        * c-parse.in (if_prefix): Don't save c_begin_if_stmt result.
        * c-typeck.c (c_begin_if_stmt): Return void.
        (c_begin_else): Tidy.  Save stmt_count.
        * c-tree.h (c_begin_if_stmt): Update decl.
        * objc/objc-act.c (objc_build_try_enter_fragment,
        objc_build_extract_fragment, objc_build_try_epilogue,
        objc_build_catch_stmt, objc_build_catch_epilogue,
        objc_build_finally_prologue, objc_build_finally_epilogue): Update
        for if builder function changes.

From-SVN: r83280
2004-06-16 18:06:04 -07:00
Richard Henderson
8c16199578 c-common.def (CASE_LABEL): Remove.
* c-common.def (CASE_LABEL): Remove.
        * c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
        (match_case_to_enum_1): Likewise.
        * c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
        * tree.h (CASE_LOW): Update commentary.
cp/
        * parser.c (cp_parser_labeled_statement): Update commentary.
        * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
        * tree.c (mark_local_for_remap_r): Likewise.

From-SVN: r83261
2004-06-16 13:51:46 -07:00
Richard Henderson
e130a54b78 c-common.def (ASM_STMT): Remove.
* c-common.def (ASM_STMT): Remove.
        * c-common.h (c_common_stmt_codes): Remove ASM_STMT.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-typeck.c (build_asm_expr): Use ASM_EXPR.
        * tree.h: Fix commentary.
cp/
        * parser.c (cp_parser_asm_definition): Update commentary.
        * pt.c (tsubst_expr): Use ASM_EXPR.
        * semantics.c (finish_asm_stmt): Likewise.

From-SVN: r83260
2004-06-16 13:23:02 -07:00
Richard Henderson
9e14e18fd1 c-common.def (GOTO_STMT, LABEL_STMT): Remove.
* c-common.def (GOTO_STMT, LABEL_STMT): Remove.
        * c-common.c (c_add_case_label): Use LABEL_EXPR.
        * c-common.h (GOTO_FAKE_P, LABEL_STMT_LABEL): Remove.
        (c_common_stmt_codes): Remove GOTO_STMT, LABEL_STMT.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-parse.in (stmt): Use GOTO_EXPR.
        (label): Use LABEL_EXPR.
        * c-semantics.c (build_stmt): Set TREE_TYPE to void.
        * tree-inline.c (copy_body_r): Don't build empty BLOCKs.
cp/
        * decl.c (finish_destructor_body): Use LABEL_EXPR.
        * parser.c (cp_parser_statement): Update commentary.
        * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
        * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
        * tree.c (mark_local_for_remap_r): Likewise.

From-SVN: r83255
2004-06-16 11:21:20 -07:00
Richard Henderson
325c369115 c-common.c (lang_gimplify_stmt): Remove next_p argument.
* c-common.c (lang_gimplify_stmt): Remove next_p argument.
	(if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then,
	c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt,
	c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c.
	(finish_fname_decls, fname_decl): Use statement_lists.
	(c_expand_expr_stmt): Don't set last_expr_type.
	(c_type_hash): Fix indentation.
	(c_safe_from_p): Don't follow TREE_CHAIN.
	(c_tree_chain_matters_p): Remove.
	* c-common.def (SCOPE_STMT): Remove.
	(CLEANUP_STMT): Redefine to contain its own body.
	* c-common.h (struct stmt_tree_s): Remove x_last_stmt,
	x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack.
	Add x_cur_stmt_list.
	(last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove.
	(cur_stmt_list): New.
	(STATEMENT_LIST_STMT_EXPR): New.
	(SCOPE_BEGIN_P, SCOPE_END_P, SCOPE_STMT_BLOCK, SCOPE_NULLIFIED_P,
	SCOPE_NO_CLEANUPS_P, SCOPE_PARTIAL_P, NEW_FOR_SCOPE_P): Remove.
	(CLEANUP_BODY): New.
	(CLEANUP_DECL): Move to operand 2.
	(c_common_stmt_codes): Remove SCOPE_STMT.
	(COMPOUND_STMT_NO_SCOPE, COMPOUND_STMT_BODY_BLOCK): Remove.
	* c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove.
	(c_push_function_context, c_pop_function_context): Don't save it.
	(finish_decl): Set TREE_USED on the decl for a cleanup.
	Use push_cleanup.
	(store_parm_decls): Use statement lists.
	(finish_function): Remove compstmt rule workaround.  Use statement
	lists.  Call finish_fname_decls after finalizing the body.
	(c_begin_compound_stmt): Move to c-typeck.c.
	* c-dump.c (c_dump_tree): Remove SCOPE_STMT.
	* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New.
	(c_genericize): Invoke them.
	(c_gimplify_stmt): Don't look through TREE_CHAIN.  Kill SCOPE_STMT.
	(c_build_bind_expr): Export.
	(gimplify_block, gimplify_cleanup): Remove.
	(gimplify_condition): Use gimplify_stmt.
	(gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack.
	(gimplify_if_stmt): Remove recursion hack.
	(c_gimplify_expr): Remove STMT_EXPR handling.
	(stmt_expr_last_stmt, gimplify_stmt_expr): Remove.
	(is_last_stmt_of_scope): Remove.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	* c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt,
	c_end_compound_stmt.
	* c-objc-common.c (build_cdtor): Likewise.
	* c-parse.in (primary): Use c_finish_stmt_expr.
	(push_scope, pop_scope): Remove.
	(c99_block_start, compstmt_start): Use c_begin_compound_stmt.
	(c99_block_end, compstmt): Use c_end_compound_stmt.
	(c99_block_lineno_labeled_stmt): Likewise.
	(compstmt_primary_start): Use c_begin_stmt_expr.
	(simple_if, select_or_iter_stmt): Update calls to stmt builders.
	(do_stmt_start): Fill in body directly.
	(lineno_stmt): Avoid setting lineno on constants.
	* c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST.
	Remove SCOPE_STMT.
	* c-semantics.c (begin_stmt_tree): Remove.
	(push_stmt_list, re_push_stmt_list, pop_stmt_list): New.
	(add_stmt): Use statement lists.
	(add_scope_stmt, finish_stmt_tree): Remove.
	(push_cleanup): New.
	* c-tree.h: Move some decls from c-common.h.
	* c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists.
	(do_case, c_finish_case): Likewise.
	(c_finish_then): Take body for then as argument.
	(c_finish_else): Similarly.
	(c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
	c_finish_for_stmt_incr, c_finish_for_stmt): New.
	(c_begin_stmt_expr, c_finish_stmt_expr): New.
	(c_begin_compound_stmt): Do scope management.
	(c_end_compound_stmt): New.
	* fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR.
	* gimplify.c (voidify_wrapper_expr): Accept temporary argument.
	Look through exception handling constructs.
	(gimplify_bind_expr): Accept temporary argument.
	(gimplify_target_expr): Special case BIND_EXPR bodies.
	(gimplify_expr): Handle fallback == fb_none like a statement.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Kill.
	* langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove.
	* langhooks.h (tree_chain_matters_p): Remove.
	* stub-objc.c (objc_clear_super_receiver): New.
	* tree-gimple.h (voidify_wrapper_expr): Update decl.
	(append_to_statement_list, append_to_statement_list_force): Move
	to tree-iterator.h.
	* tree-inline.c (expand_call_inline): Update call.
	(clone_body): Use statement lists.
	(walk_tree): Don't check tree_chain_matters_p.
	(copy_tree_r): Likewise.
	* tree-iterator.c (alloc_stmt_list): Clear lang bits.
	(tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly.
	* tree-iterator.h (append_to_statement_list,
	append_to_statement_list_force): Moved from tree-gimple.h.
	* tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump.
	* objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt.
	(objc_enter_block): Likewise.
	(objc_exit_block): Use c_end_compound_stmt.
	(objc_build_try_enter_fragment): Add #error and comment for
	rewriting for OBJCPLUS.
	(objc_build_extract_fragment, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_finally_prologue,
	objc_build_finally_epilogue): Update for C statement builders.
	* objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P):
	Remove.
cp/
	* call.c (initialize_reference): Don't build CLEANUP_STMT here.
	* cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
	(genericize_try_block): Use gimplify_stmt.
	(genericize_catch_block, genericize_eh_spec_block): Likewise.
	(cp_gimplify_init_expr): Remove STMT_EXPR special case.
	(gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
	* cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	(cp_tree_chain_matters_p): Remove.
	* cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
	(COMPOUND_STMT_BODY_BLOCK): New.
	(STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
	(EXPR_STMT_STMT_EXPR_RESULT): New.
	(building_stmt_tree): Check cur_stmt_list.
	(tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
	(BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
	* decl.c (poplevel): Use pop_stmt_list for minding cleanups.
	(cp_finish_decl): Use push_cleanup.
	(start_function, finish_function): Use statement lists.
	(finish_stmt): Do nothing.
	* except.c (begin_eh_spec_block): Use statement lists.
	(check_handlers_1, check_handlers): Likewise.
	* init.c (construct_virtual_base): Don't add extra compound stmts.
	(build_vec_init): Likewise.
	* name-lookup.c (maybe_push_cleanup_level): Use statement lists.
	* name-lookup.h (struct cp_binding_level): Add statement_list.
	* parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
	(cp_parser_labeled_statement, cp_parser_expression_statement,
	cp_parser_statement_seq_opt): Likewise.
	(cp_parser_compound_statement): Likewise.  Take bool for try block.
	(cp_parser_selection_statement): Tidy if processing.
	(cp_parser_already_scoped_statement): Rewrite to do what it says.
	* pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
	(tsubst_expr): Rewrite STMT_EXPR processing.  Handle STATEMENT_LIST.
	Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
	* semantics.c (do_poplevel, do_pushlevel): Use statement lists.
	(finish_cond): New, rewritten from FINISH_COND.
	(simplify_loop_decl_cond): New.
	(finish_expr_stmt): Avoid nested EXPR_STMTs.
	(begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
	begin_else_clause, finish_else_clause, finish_if_stmt,
	begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
	begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
	finish_for_cond, finish_for_stmt, begin_switch_stmt,
	finish_switch_cond, finish_switch_stmt, begin_try_block,
	finish_try_block, finish_cleanup_try_block, finish_function_try_block,
	finish_handler_sequence, finish_function_handler_sequence,
	begin_handler, finish_handler_parms, finish_handler,
	begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
	using statement lists.
	(begin_compound_stmt): Replace has_no_scope argument with flags.
	Update all callers.  Use statement lists.
	(finish_compound_stmt): Likewise.
	(finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
	(current_scope_stmt_stack): Remove.
	(simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
	* typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
	Rewrite with statement lists.
testsuite/
	* g++.dg/ext/stmtexpr1.C: XFAIL.
	* gcc.dg/20030612-1.c: XFAIL.

From-SVN: r83221
2004-06-15 18:21:38 -07:00
Richard Henderson
7a3ea2011b c-parse.in (OFFSETOF, [...]): New.
* c-parse.in (OFFSETOF, offsetof_member_designator): New.
        (primary): Handle offsetof.  Add error productions for faux functions.
        Move component_ref objc checking to build_component_ref.
        (reswords): Add offsetof.
        (rid_to_yy): Add offsetof.
        * c-tree.h (build_offsetof): Declare.
        * c-common.h (objc_is_public): Declare.
        * c-typeck.c (build_component_ref): Check objc_is_public.
        (build_offsetof): New.
        * stub-objc.c (objc_is_public): New.
        * objc/objc-act.c, objc/objc-act.h (objc_is_public): Rename
        from is_public.
        * ginclude/stddef.h (offsetof): Use __builtin_offsetof.
        * doc/extend.texi (Offsetof): Move from C++ section to C section
        and rewrite for __builtin_offsetof.
cp/
        * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
        * parser.c (struct cp_parser): Remove in_offsetof.
        (cp_parser_new): Don't set it.
        (cp_parser_unary_expression): Don't check it.
        (cp_parser_postfix_open_square_expression): Split out from ...
        (cp_parser_postfix_expression): ... here.
        (cp_parser_postfix_dot_deref_expression): Likewise.
        (cp_parser_builtin_offsetof): New.
        (cp_parser_primary_expression): Use it.
testsuite/
        * g++.dg/template/dependent-expr4.C: Use __builtin_offsetof.

From-SVN: r82549
2004-06-01 08:12:23 -07:00
Andrew Pinski
3c79fa86db c-decl.c (c_expand_body_1): Remove and fold back into ...
ChangeLog:
	* c-decl.c (c_expand_body_1): Remove and fold back into ...
	(c_expand_body): here.
	(c_expand_decl): Move to ...
	* c-common.c (c_expand_decl): Here and remove check for nested
	functions.
	* c-common.h (c_expand_decl): Add prototype.
	* c-tree.h (c_expand_decl): Remove.

cp/ChangeLog:
	* cp-lang.c (cp_expand_decl): Remove.
	(LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.

From-SVN: r82469
2004-05-30 16:53:32 -07:00
Andrew Pinski
2fec96c1b9 c-common.c (c_estimate_num_insns_1): Kill.
2004-05-28  Andrew Pinski  <pinskia@physics.uc.edu>

        * c-common.c (c_estimate_num_insns_1): Kill.
        (c_estimate_num_insns): Kill.
        * c-common.h (c_estimate_num_insns): Kill.

From-SVN: r82377
2004-05-28 13:32:20 -07:00
Zack Weinberg
b4117c3061 Makefile.def, [...]: Remove all mention of libf2c.
top:
	* Makefile.def, Makefile.tpl, configure.in: Remove all mention
	of libf2c.
	* configure, Makefile.in: Regenerate.
contrib:
	* gcc_update: Remove gcc/f/intdoc.texi and all libf2c files
	from list of files to be touched.
	* convert_to_f2c, convert_to_g2c, download_f2c: Delete.
gcc:
	* f: Entire directory removed

	* c-common.h (CTI_G77_INTEGER_TYPE, CTI_G77_UINTEGER_TYPE)
	(CTI_G77_LONGINT_TYPE, CTI_G77_ULONGINT_TYPE)
	(g77_integer_type_node, g77_uinteger_type_node)
	(g77_longint_type_node, or g77_ulongint_type_node): Delete.
	* c-common.c (c_common_nodes_and_builtins): Do not initialize
	the above set of variables.

	* config/i386/uwin.h: No need to define WIN32_UWIN_TARGET.
	* doc/invoke.texi, doc/standards.texi: Remove cross-references
	to g77 manual.
gcc/po:
	* exgettext (spec_error_string): Do not scan beyond the end of
	the string for a close brace.  Do not bail out at the first
	incidence of %%e.
	* gcc.pot: Regenerate.

From-SVN: r81967
2004-05-18 01:26:21 +00:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Paolo Bonzini
cc27e657d3 re PR target/14899 (wrong code due to change in compatibility rules for vector types)
gcc/ChangeLog:
2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
            Richard Henderson  <rth@redhat.com>

        PR target/14899

        * c-common.c (vector_types_convertible_p): New function.
        * c-typeck.c (comptypes): Recurse on vector types.
        (convert_for_assignment): Use vector_types_convertible_p.
        (digest_init): Use vector_types_convertible_p to check
        validness of constant vector initializers; otherwise treat
        them as scalars.
        * tree.c (make_or_reuse_type): New.
        (build_common_tree_nodes): Use it.
        * cp/call.c (standard_conversion): Likewise.
        * cp/typeck.c (comptypes): Recurse on vector types.
        (convert_for_assignment): Use vector_types_convertible_p.
        * config/rs6000/rs6000.c (build_opaque_vector_type):
        New function.
        (rs6000_init_builtins): Use it.


gcc/testsuite/ChangeLog:
2004-05-04  Paolo Bonzini  <bonzini@gnu.org>

	* g++.dg/ext/spe1.C: New testcase.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r81504
2004-05-05 07:23:00 +00:00
Geoffrey Keating
7876228d90 Index: ChangeLog
2004-04-06  Geoffrey Keating  <geoffk@apple.com>

	* c-common.h (pending_lang_change): Mark for PCH.

Index: testsuite/ChangeLog
2004-04-06  Geoffrey Keating  <geoffk@apple.com>

	* g++.dg/pch/externc-1.Hs: New.
	* g++.dg/pch/externc-1.C: New.

From-SVN: r80484
2004-04-07 20:47:52 +00:00
Zack Weinberg
f75fbaf754 PR 12267, 12391, 12560, 13129, 14114, 14113
* c-tree.h: Forward declare struct c_binding.  Declare
	c_override_bindings_to_false.  Update prototypes.
	(struct lang_identifier): Update comments.  Change fields to be
	struct c_binding *.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE)
	(IDENTIFIER_LABEL_VALUE, C_DECL_INVISIBLE)
	(KEEP_NO, KEEP_YES, KEEP_MAYBE): Delete.
	(C_DECL_IN_EXTERNAL_SCOPE, C_DECL_DECLARED_BUILTIN): New.
	* c-common.h: Update prototypes.
	* c-decl.c (struct c_scope): Update commentary.  Remove names,
	names_last, parms, parms_last, tags, and shadowed fields.  Add
	bindings and depth fields.
	(scope_freelist): Move to more appropriate location.
	(c_print_identifier): Update for changes to struct lang_identifier.
	(objc_mark_locals_volatile): Update for new bindings structures.
	(global_bindings_p): Honor c_override_global_bindings_to_false.
	(pushlevel): Rename to push_scope; take no arguments; use the
	scope_freelist; initialize scope->depth and check for overflow.
	(poplevel): Rename to pop_scope; totally rewritten for new bindings
	structures.
	(diagnose_mismatched_decls): Use C_DECL_DECLARED_BUILTIN, not
	C_DECL_INVISIBLE, for certain decisions.  Adjust some diagnostics.
	Improve some commentary.  Adjust handling of forward parm decls.
	(merge_decls): Set C_DECL_DECLARED_BUILTIN when appropriate.
	Preserve C_DECL_IN_EXTERNAL_SCOPE.
	(warn_if_shadowing): Correct indentation.  Improve diagnostics.
	(pushdecl): Remove unnecessary assertion.  Short-circuit anonymous
	decls.  Rewrite for new bindings structures.  Improve commentary.
	Eliminate the copy_node call.
	(implicit_decl_warning): Use the "diag" idiom (as seen in
	locate_old_decl) to reduce code duplication; call locate_old_decl
	if appropriate.  Relocate to remove need for forward declaration.
	(implicitly_declare): Adjust for new bindings structures.  Kludge
	around Objective-C not-really-builtin functions.
	(undeclared_variable): Improve diagnostics.  If current_function_decl
	is nonnull but current_function_scope is null, use current_scope.
	Use bind.
	(lookup_tag): Adjust for new bindings structures.  Kludge around
	Objective-C's tag declarations that wind up in the external scope.
	(lookup_name): Adjust for new bindings structures.  Kludge around
	c-common.c's pseudo-typedefs that wind up in the external scope.
	(lookup_name_current_level): Rename lookup_name_in_scope; take a
	second argument indicating the scope to examine; rewrite for
	new bindings structures.
	(c_init_decl_processing): Adjust for renamed functions.  Do not
	initialize current_file_decl, first_builtin_decl, last_builtin_decl.
	First scope pushed is the external scope, not the global scope.
	(builtin_function): Use bind, not pushdecl.  Adjust other bits
	for new data structures.  Keep track of builtins that should be
	made visible automatically.
	(start_decl): Adjust diagnostics.  Remove unnecessary call to
	expand_decl.
	(grokparms): Return 0 if arg_types is error_mark_node.
	(get_parm_info): Rename "void_at_end" argument to "ellipsis", with
	reversed sense.  Rewrite for new bindings structures.  Do not
	leave any decls in the scope, to prevent pop_scope from doing
	contradictory things with them.
	(finish_struct, finish_enum): Remove redundant diagnostics.
	(build_enumerator): Don't cascade diagnostics for error_mark_node.
	Mark location where -pedantic changes the meaning of the program.
	(store_parm_decls_newstyle, store_parm_decls_oldstyle): Load the
	parameter decls into the function's scope structure using bind.
	Warn here about function definitions in the wrong style.
	Adjust diagnostics.
	(store_parm_decls): Correct the determination of whether a
	function was defined with a prototype.
	(c_write_global_declarations): Operate on all file decls and on
	the external scope.  Split body of the loop to...
	(c_write_global_declarations_1): ... this new function, to avoid
	code duplication.
	(truly_local_externals, first_builtin_decl, last_builtin_decl)
	(make_scope, pop_scope, in_parm_level_p, set_block)
	(any_external_decl, record_external_decl, bind_label, getdecls)
	(link_hash_hash, link_hash_eq, merge_translation_unit_decls)
	(c_reset_state): Delete.
	(visible_builtins, c_override_global_bindings_to_false)
	(c_binding, I_SYMBOL_BINDING, I_SYMBOL_DECL, I_TAG_BINDING)
	(I_TAG_DECL, I_LABEL_BINDING, I_LABEL_DECL, file_scope)
	(external_scope, binding_freelist, bind, free_binding_and_advance)
	(push_file_scope, pop_file_scope): New.
	(pushtag, pushdecl_top_level, lookup_label, declare_label)
	(define_label, c_make_fname_decl, finish_decl)
	(mark_forward_parm_decls, build_compound_literal)
	(grokdeclarator, start_function, check_for_loop_decls)
	(identifier_global_value, record_builtin_type): Minor adjustments
	for new bindings structures.  Improve diagnostics and commentary.
	* c-objc-common.c (start_cdtor, finish_cdtor): Adjust calls to
	pushlevel/poplevel respectively.
	(c_objc_common_finish_file): Don't call merge_translation_unit_decls.
	* c-opts.c (c_common_parse_file): Remove spurious ATTRIBUTE_UNUSED.
	Warn about YYDEBUG not being defined only if -dy.  Remove no-longer-
	correct loop over multiple translation units; call fatal_error if
	requested to compile more than one file at once.  (This disables
	IMA temporarily - an up-front error being preferable to a crash.)
	* c-parse.in (pushlevel, poplevel rules): Rename push_scope, pop_scope.
	(all actions): Adjust calls to pushlevel/poplevel.
	(parsing_iso_function_signature): Delete.
	(extdef_1): Fold into extdef.
	(old_style_parm_decls_1): Fold into old_style_parm_decls.  Don't
	warn here about function definitions in the wrong style.
	(after_tyle_declarator, parm_declarator_starttypename)
	(parm_declarator_nostarttypename, notype_declarator): Remove
	commented-out productions.
	(parmlist_1, parmlist_2): Use make_node, not tree_cons, to create
	an empty TREE_LIST node.  Adjust calls to get_parm_info.
	(parmlist_2 : ELLIPSIS): Tag the arg-info block with error_mark_node
	to suppress -Wold-style-definition after this error.
	(c_parse_file): Don't clear the binding stack or call
	finish_fname_decls here.  Correct comment.
	* c-typeck.c (same_translation_unit_p): Export.
	(common_type): Use c_override_global_bindings_to_false, not
	pushlevel/poplevel/declare_parm_level.
	* c-lang.c: Override LANG_HOOKS_CLEAR_BINDING_STACK,
	LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK,
	and LANG_HOOKS_GETDECLS with do-nothing stubs.
	* objc/objc-lang.c: Likewise.
	* objc/objc-act.c: Adjust all calls to pushlevel, poplevel,
	get_parm_info.
	(OBJC_VOID_AT_END): Delete; replace all uses
	with void_list_node.
	(generate_forward_declaration_to_string_table): Delete.
	* objc/objc-act.h (OCTI_STRG_DECL, UOBJC_STRINGS_decl): Delete.

	* coverage.c (create_coverage): Don't pushdecl anything.
	* langhooks.c (lhd_clear_binding_stack): Call
	lang_hooks.decls.poplevel, not poplevel.
	* tree.c (list_length): If ENABLE_TREE_CHECKING, abort on a
	circular list rather than going into an infinite loop.

cp:
	* cp-lang.c (c_reset_state): Delete.
	(push_file_scope, pop_file_scope): New stubs.
	* parser.c (c_parse_file): Call sorry() here if called more than once.

testsuite:
	* gcc.dg/Wold-style-definition-1.c, gcc.dg/builtins-30.c
	* gcc.dg/unused-4.c, gcc.dg/noncompile/label-1.c
	* gcc.dg/noncompile/label-lineno-1.c, objc.dg/naming-1.m:
	Adjust error regexps.
	* gcc.dg/Wshadow-2.c, gcc.dg/noncompile/incomplete-3.c
	* gcc.dg/noncompile/undeclared-1.c: New test cases.
	* gcc.dg/decl-5.c, gcc.dg/redecl-1.c: Remove XFAIL.
	* gcc.dg/local1.c: Add explanatory comment.

From-SVN: r79883
2004-03-23 23:47:53 +00:00
Mark Mitchell
57782ad852 re PR c++/11326 (C++ IA64 ABI: 3.1.4: sometimes pointer to temporary return value is implicit first parameter preceding "this")
PR c++/11326
	* c-common.c (flag_abi_version): Remove.
	* c-common.h (flag_abi_version): Likewise.
	* c-opts.c (c_common_handle_option): Remove OPT_fabi_version case.
	* c.opt (fabi-version): Remove.
	* calls.c (expand_call): Always pass a function type to
	struct_value_rtx.  Use convert_memory_address.
	* common.opt (fabi-version): Add it.
	* flags.h (flag_abi_version): Likewise.
	(abi_version_at_least): New macro.
	* opts.c (common_handle_option): Add OPT_fabi_version.
	* toplev.c (flag_abi_version): Define it.
	* config/ia64/ia64.c (ia64_struct_retval_addr_is_first_parm_p):
	New function.
	(ia64_output_mi_thunk): Use it.
	(ia64_struct_value_rtx): Likewise.

	PR c++/11326
	* cp-tree.h (abi_version_at_least): Remove.
	* mangle.c: Include flags.h.

	PR c++/11326
	* g++.dg/abi/structret1.C: New test.

From-SVN: r77968
2004-02-17 18:32:45 +00:00
Roger Sayle
7501c4e45b c-common.h (GET_DIRECTIVE_LINE): Remove unused macro.
* c-common.h (GET_DIRECTIVE_LINE): Remove unused macro.
	(get_directive_line): Remove unused function prototype.

	* f/lex.c (ffelex_get_directive_line): Provide a more descriptive
	comment.  Remove reference to non-existant get_directive_line.

From-SVN: r77850
2004-02-15 14:30:38 +00:00
Zack Weinberg
a6f78652f3 c-common.c (shadow_warning): Delete.
* c-common.c (shadow_warning): Delete.
	* c-common.h (free_parser_stacks, shadow_warning, sw_kind): Delete.
	* c-decl.c (warn_if_shadowing): Issue shadow warnings directly.
	* c-opts.c (c_common_parse_file): Don't call free_parser_stacks.
	* c-parse.in (free_parser_stacks): Delete.
cp:
	* name-lookup.c (pushdecl): Issue shadow warnings directly.
	* parser.c (free_parser_stacks): Delete.
testsuite:
	* gcc.c-torture/execute/string-opt-15.c: Define memcmp with void *
	arguments.
	* gcc.dg/fwritable-strings-1.c: Expect the deprecation notice.
------
	Bug 13856
	* c-decl.c (diagnose_mismatched_decls): Only give special
	treatment when olddecl is DECL_BUILT_IN, if C_DECL_INVISIBLE
	is also true.
	(merge_decls): Don't clear DECL_BUILT_IN_CLASS and
	DECL_FUNCTION_CODE when defining a built-in function.
	Don't update DECL_ESTIMATED_INSNS.
	* dwarf2out.c (dwarf2out_decl): Don't ignore built-in
	FUNCTION_DECLs.
	* tree.h: Delete DECL_ESTIMATED_INSNS.
	* tree-inline.c (struct inline_data): Delete inlined_insns field.
	(expand_call_inline, optimize_inline_calls): Don't update
	DECL_ESTIMATED_INSNS nor inlined_insns.
	* cgraphunit.c (cgraph_analyze_function): Don't update
	DECL_ESTIMATED_INSNS.
cp:
	* optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
	* decl.c (duplicate_decls, start_function): Likewise.
testsuite:
	* gcc.dg/visibility-8.c: New testcase.

From-SVN: r77475
2004-02-08 01:59:11 +00:00
Per Bothner
8e9ea4d72c Partially revert/redo 2003-10-01 change; fix -fworking-directory.
* c-ppoutput.c (pp_dir_change):  New function.
	* c-common.h (pp_dir_change):  New declaration.
	* cpplib.h (struct cpp_options):  Remove working_directory field.
	* cppinit.c (cpp_find_main_file, cpp_push_main_file):  Merge back to
	(cpp_read_main_file):  as before 10-01.  Call _cpp_stack_file.
	Don't handle -fworking_directory here, but in c_common_post_options.
	(read_original_directory): Don't back up when done.
	Don't clear no-longer used working_directory flag.
	* cpplib.h:  Update declarations to match.
	* c-lex.c (cb_dir_change):  Move to c-opts.c.
	(init_c_lex):  Don't set dir_change callback here, since we want
	to set it even if flag_preprocess_only.
	* c-opts.c (cb_dir_change):  Function moved from c-lex.c.
	(c_common_post_options):  Set dir_change callback.
	Call pp_dir_change if approporiate.
	(finish_options):  Don't call cpp_find_main_file here.	Hence remove
	unneeded parameter and result. Do LC_RENAME for <built-in>.
	(c_common_post_options):  Call cpp_read_main_file here instead.
	(c_common_init):  Update accordingly.
	(push_command_line_include):  Don't cpp_push_main_file.
	Do LC_RENAME rather than LC_LEASE to get back to main file.
	Compared to pre-10-01 version, inline cpp_rename_to_main_file.
	(c_common_parse_file):  Call cpp_read_main_file for subsequent main
	files, but call finish_options for all files.
	* c-opts.c (sanitize_cpp_opts):  Don't set cpp_opts->working_directory.
	* fix-header.c (read_scan_file):  Call cpp_read_main_file instead of
	cpp_find_main_file + cpp_push_main_file.
	* c-lex.c (fe_file_change):  Don't set main_input_filename here.
	* opts.c (handle_options):  Only set main_input_filename first time.

From-SVN: r77303
2004-02-04 22:52:26 -08:00
Kazu Hirata
1f52178b3a c-common.h: Fix comment typos.
* c-common.h: Fix comment typos.
	* c-decl.c: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* et-forest.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* postreload.c: Likewise.
	* varray.c: Likewise.

From-SVN: r76539
2004-01-25 03:52:42 +00:00
Kazu Hirata
d9221e016b alias.c, [...]: Update copyright.
* alias.c, basic-block.h, c-common.c, c-common.h,
	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
	genautomata.c, genconditions.c, genemit.c, genflags.c,
	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
	unwind.h, varray.c, varray.h: Update copyright.

From-SVN: r76302
2004-01-21 20:40:04 +00:00
Kazu Hirata
e0a21ab90e c-common.h: Fix comment formatting.
* c-common.h: Fix comment formatting.
	* c-cppbuiltin.c: Likewise.
	* c-pragma.c: Likewise.
	* calls.c: Likewise.
	* collect2.c: Likewise.
	* cppcharset.c: Likewise.
	* cpptrad.c: Likewise.
	* dbxout.c: Likewise.
	* defaults.h: Likewise.
	* dwarf2out.c: Likewise.
	* fold-const.c: Likewise.
	* genautomata.c: Likewise.
	* genconditions.c: Likewise.
	* genflags.c: Likewise.
	* gengtype.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* predict.c: Likewise.
	* sdbout.c: Likewise.

From-SVN: r75957
2004-01-16 01:44:06 +00:00
Mark Mitchell
0fab64a344 expr.h (expand_expr): Make it a macro, not a function.
* expr.h (expand_expr): Make it a macro, not a function.
	(expand_expr_real): New function.
	* expr.c (store_expr): Adjust logic for deciding whether or not to
	copy the value returned by expand_expr.
	(expand_expr): Rename to ...
	(expand_expr_real): ... this.  Add alt_rtl parameter.  Adjust
	calls to language hooks.
	* c-common.h (c_expand_expr): Adjust prototype.
	* c-common.c (c_expand_expr): Add alt_rtl parameter.
	* langhooks-def.h (lhd_expand_expr): Change prototype.
	* langhooks.c (lhd_expand_expr): Add all_rtl parameter.
	* langhooks.h (lang_hooks): Change type of expand_expr.
	* stmt.c (stmt_status): Add x_last_expr_alt_rtl.
	(last_expr_alt_rtl): Likewise.
	(expand_expr_stmt_value): Set last_expr_alt_rtl.
	(clear_last_expr): Clear it.
	(expand_end_stmt_expr): Set RTL_EXPR_ATL_RTL.
	(expand_end_bindings): Save and restor last_expr_alt_rtl.
	* tree.def (RTL_EXPR): Give it an additional operand.
	* tree.h (RTL_EXPR_ALT_RTL): New macro.

	* misc.c (gnat_expand_expr): Add alt_rtl parameter.

	* cp-tree.h (cxx_expand_expr): Change prototype.
	* expr.c (cxx_expand_expr): Add alt_rtl parameter.

	* java-tree.h (java_expand_expr): Change prototype.
	* expr.c (java_expand_expr): Add alt_rtl parameter.

From-SVN: r75594
2004-01-09 19:55:13 +00:00