1. 22 Jun, 2004 2 commits
    • Radar #: 3701874 · f6bf7bb6
      2004-06-21  Andrew Pinski  <apinski@apple.com>
      
              Radar #: 3701874
              * c-decl.c (push_file_scope): Return early if we already
              have a file scope.
      
      2004-06-21  Andrew Pinski  <apinski@apple.com>
      
              * gcc.dg/pch/struct-1.c: New.
              * gcc.dg/pch/struct-1.hs: New.
      
      From-SVN: r83483
      Andrew Pinski committed
    • alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset. · 44de5aeb
      	* alias.c (adjust_offset_for_component_ref): Use
      	component_ref_field_offset.
      	* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
      	* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
      	(gimplify_decl_stmt): Call gimplify_type_sizes for type.
      	For decl, call gimplify_one_sizepos and use statement list.
      	(gimplify_compound_literal_expr): New arg PRE_P.
      	Add statement to PRE_P list and return DECL.
      	(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
      	gimplify_compound_literal_expr.
      	* c-tree.h (getdecls): Deleted.
      	* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
      	(build_array_ref): Add two operands for ARRAY_REF.
      	(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
      	COMPOUND_LITERAL_EXPR.
      	* coverage.c (tree_coverage_counter_ref): Add new operands
      	for ARRAY_REF.
      	* emit-rtl.c (component_ref_for_mem_expr): Add new operand
      	for COMPONENT_REF.
      	(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
      	and array_ref_element_size.
      	(widen_memory_access):Use component_ref_field_offset.
      	* explow.c (update_nonlocal_goto_save_area): Add two operands
      	for ARRAY_REF.
      	* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
      	(component_ref_field_offset): Likewise.
      	(get_inner_reference): Use them.
      	(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
      	* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
      	(fold_read_from_constant_string): Use array_ref_low_bound.
      	Verify that result is a character type.
      	(build_fold_indirect_ref): Add two operands for ARRAY_REF.
      	* function.c (expand_function_start): Likewise.
      	* gimple-low.c (expand_var_p): Delete duplicated line.
      	* gimplify.c: Add static decls for local functions.
      	(cgraph.h): Now included.
      	(create_tmp_var): Remove check for ARRAY_TYPE.
      	(copy_if_shared_r): Look at bounds and sizes of types.
      	(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
      	(gimplify_exit_expr, shortcut_cond_expr): Likewise.
      	(gimplify_save_expr, gimple_push_cleanup): Likewise.
      	(gimplify_init_constructor): Likewise.
      	WANT_VALUE now bool.
      	If empty list with no result wanted, return GS_UNHANDLED.
      	Add additional operands for ARRAY_REF and COMPONENT_REF.
      	(canonicalize_component_ref): Convert to &array[L].
      	(gimplify_array_ref_to_plus): Use array_ref_element_size and
      	array_ref_lower_bound.
      	(build_addr_expr_with_type, build_addr_expr): New functions.
      	(gimplify_compound_lval): WANT_LVALUE now bool.
      	Major rework to allow handle_component_p and initialize and
      	gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
      	COMPONENT_REF.
      	(gimplify_array_ref): Deleted.
      	(gimplify_self_mod_expr): WANT_VALUE now bool.
      	(gimplify_modify_expr): Gimplify to_p and from_p later.
      	Factor out code into gimplify_modify_expr_rhs and call twice.
      	Move variable-size code earlier and handle PLACEHOLDER_EXPR.
      	(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
      	(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
      	(gimplify_expr, case ARRAY_REF): Delete special case.
      	Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
      	IMAGPART, and REALPART the same way.
      	(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
      	(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
      	Call alloc_stmt_list instead of build_empty_stmt.
      	Deal with _REF that's volatile.
      	(gimplify_type_sizes, gimplify_one_sizepos): New functions.
      	(unshare_body, unvisit_body): New functions.
      	(gimplify_body): Call them.
      	* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
      	* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
      	* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
      	* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
      	like ARRAY_REF.
      	(verify_expr, case ADDR_EXPR): Use handled_component_p.
      	* tree-dfa.c (get_virtual_var): Likewise.
      	* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
      	New cases to dump new operands; likewise for ARRAY_RANGE_REF.
      	* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
      	* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
      	and INDIRECT_REF.
      	(get_base_address): Use handled_component_p.
      	* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
      	* tree-line.c (walk_tree): Walk more things for types and decls.
      	* tree-mudflap.c (mf_build_check_statement_for): Add new operands
      	for ARRAY_REF and COMPONENT_REF.
      	(mx_xform_derefs_1): Clean up usage of decl sizes.
      	* tree-nested.c (build_addr): Use handled_component_p.
      	(walk_stmts, case CATCH_EXPR): Add missing "break".
      	(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
      	(finalize_nesting_tree_1): Likewise.
      	(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
      	and process additional operands.
      	(convert_local_reference): Likewise.
      	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
      	ARRAY_RANGE_REF similarly to ARRAY_REF.
      	* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
      	like RECORD_TYPE.
      	(dump_generic_node, case COMPONENT_REF): Print offset operand.
      	(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
      	and print lower bound and element size for both.
      	(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
      	* tree-sra.c (csc_build_component_ref): Add new operand.
      	(scalarize_call_expr): Use get_base_address.
      	* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
      	(maybe_fold_offset_to_array_ref): Rework to handle input having an
      	ARRAY_REF, refine handling of lower bound, and add new operands
      	for ARRAY_REF.
      	(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
      	(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
      	(maybe_fold_stmt_addition): Only handle constant lower bound.
      	* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
      	Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
      	Look at new offset operand of COMPONENT_REF.
      	* tree-ssa.c (set_is_used): Use handled_component_p.
      	* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
      	(stabilize_reference, case COMPONENT_REF): Likewise.
      	(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
      	(recompute_tree_invariant_for_addr_expr): Completely rework to
      	be more precise.  Also set TREE_SIDE_EFFECTS.
      	(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
      	(build2_stat, build3_stat, build4_stat): For references,
      	propagate TREE_THIS_VOLATILE.
      	(get_unwidened): Add new operand for COMPONENT_REF.
      	(get_narrower): Likewise; use host_integerp for DECL_SIZE.
      	* tree.def (COMPONENT_REF): Add new operand.
      	(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
      	* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
      	(component_ref_field_offset): Likewise.
      	* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
      	(alpha_gimplify_va_arg): Likewise.
      	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
      	* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
      	* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
      	* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
      	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
      	Likewise.
      	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
      	* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
      	* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
      	Likewise.
      	(xstormy16_expand_builtin_va_arg): Likewise.
      	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.
      
      	* cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
      	(build_new_method_call): Likewise.
      	* cp/decl.c (local_variable_p_walkfn): Don't walk into types.
      	* cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
      	(build_anon_union_vars): Add new operand for COMPONENT_REF.
      	* cp/init.c (buld_new): Add new operand for ARRAY_REF.
      	* cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF.
      	(do_build_assign_ref): Likewise.
      	* cp/parser.c (cp_parser_direct_new_declarator): Add new operands
      	for ARRAY_REF.
      	(cp_parser_direct_declarator): Likewise.
      	* cp/pt.c (tsubst): Likewise.
      	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
       	for COMPONENT_REF.
      	* cp/semantics.c (finish_non_static_data_member): Add new operand
      	for COMPONENT_REF.
      	* cp/typeck.c (build_class_member_access_expr): Likewise.
      	(build_class_member_access_expr, finish_class_member_access_expr):
      	Likewise.
      	(build_ptrmemfunc_access_expr): Likewise.
      	(build_array_ref): Add new operands for ARRAY_REF.
      	* cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
      	* cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
      
      	* fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
      	* fortran/trans-array.c (gfc_conv_descriptor_data): Add operand
      	for COMPONENT_REF.
      	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
      	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
      	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
      	* fortran/trans-common.c (create_common): Likewise.
      	* fortran/trans-expr.c (gfc_conv_component_ref): Likewise.
      	* fortran/trans-io.c (set_parameter_value): Likewise.
      	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
      	(transfer_expr): Likewise.
      	* fortran/trans-decl.c (gfc_trans_auto_character_variable):
      	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
      	(gfc_simplify_function): New function.
      	(gfc_generate_function-code): Properly handle nested functions.
      	* fortran/trans.c (gfc_build_array_ref): Add two new operands
      	for ARRAY_REF.
      
      	* java/class.c (build_class_ref): Add new operand for COMPONENT_REF.
      	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
      	* java/constants.c (build_ref_from_constant_pool): Likewise.
      	* java/expr.c (build_java_array_length_access): Likewise.
      	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
      	(invoke_build_dtable, build_invokevirtual): Likewise.
      	(build_invokeinterface, java_expand_expr): Likewise.
      	(emit_init_test_initialization): Likewise.
      	* java/java-gimplify.c (java_gimplify_new_array_init): Likewise.
      	* java/parse.y (make_qualifed_name, build_array_ref): Likewise.
      
      	* objc/ojbc-act.c (generate_static_references): Add additional
      	operands to ARRAY_REF.
      	(generate_strings, build_method_prototype_list_template): Likewise.
      	(generate_protocol_list): Likewise.
      
      From-SVN: r83474
      Richard Kenner committed
  2. 21 Jun, 2004 2 commits
    • c-common.def (RETURN_STMT): Remove. · 5088b058
              * 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
      Richard Henderson committed
    • c-decl.c (start_function): Don't call make_decl_rtl. · 0b4da8a1
      	* c-decl.c (start_function): Don't call make_decl_rtl.  Don't
      	look at TREE_ADDRESSABLE of symbol name.
      
      From-SVN: r83460
      Zack Weinberg committed
  3. 20 Jun, 2004 2 commits
    • c-common.h (add_decl_stmt): Move to cp-tree.h. · 543a0daa
              * 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
      Richard Henderson committed
    • c-common.h (has_c_linkage): New interface. · 84b8b0e0
      	* 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
      Zack Weinberg committed
  4. 18 Jun, 2004 1 commit
    • c-common.c (flag_objc_sjlj_exceptions): New. · 093c7153
      	* 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
      Richard Henderson committed
  5. 16 Jun, 2004 1 commit
    • c-common.c (lang_gimplify_stmt): Remove next_p argument. · 325c3691
      	* 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
      Richard Henderson committed
  6. 13 Jun, 2004 2 commits
  7. 07 Jun, 2004 1 commit
  8. 06 Jun, 2004 1 commit
    • re PR c/13519 (typeof(nonconst+const) is const) · 10bc1b1b
      	PR c/13519
      	* c-typeck.c (composite_type, common_pointer_type): New functions.
      	(common_type): Split parts into composite_type and
      	common_pointer_type.  Ensure that arithmetic operations return
      	unqualified types without attributes.  Don't make composite type
      	of signed enum and compatible integer be unsigned.
      	(build_conditional_expr, build_binary_op): Use
      	common_pointer_type.
      	* c-decl.c (merge_decls): Use composite_type.
      	* c-tree.h (composite_type): Declare.
      
      testsuite:
      	* gcc.c-torture/enum-3.c, gcc.dg/pr13519-1.c: New tests.
      
      From-SVN: r82671
      Joseph Myers committed
  9. 31 May, 2004 1 commit
  10. 30 May, 2004 1 commit
    • c-decl.c (c_expand_body_1): Remove and fold back into ... · 3c79fa86
      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
      Andrew Pinski committed
  11. 28 May, 2004 1 commit
    • function.cc: New. · 0d0bc036
      	* testsuite/g++.dg/charset/function.cc: New.
      
      	* testsuite/gcc.dg/charset/function.c: New.
      
      	* c-decl.c (c_make_fname_decl): Free return value from
      	fname_as_string.
      
      	* cp/decl.c (cp_make_fname_decl): Free return value from
      	fname_as_string.
      
      	* c-common.c (fname_as_string): Translate if necessary.
      
      From-SVN: r82381
      Aldy Hernandez committed
  12. 19 May, 2004 1 commit
    • * cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node) · bb9a388d
      	(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
      	(cgraph_varpool_node):
      	Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
      	(cgraph_function_possibly_inlined_p): Use the decl itself for
      	the key, not DECL_ASSEMBLER_NAME.
      	(change_decl_assembler_name): No need to muck with the hash tables.
      	(cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
      	Delete.
      	* cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
      	for the key, not DECL_ASSEMBLER_NAME.
      	* cgraph.h: Remove prototypes of deleted functions.
      	* varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
      	(mark_decl_referenced): New function.
      	* tree.h: Prototype mark_decl_referenced.
      	* final.c (output_addr_const) <case SYMBOL_REF>: Call
      	mark_decl_referenced before assemble_name.
      	* c-decl.c (finish_decl): Use mark_decl_referenced.
      cp:
      	* decl.c (cp_finish_decl): Use mark_decl_referenced.
      	* decl2.c (maybe_make_one_only): Likewise.
      	* method.c (use_thunk): Likewise.
      
      From-SVN: r82015
      Zack Weinberg committed
  13. 14 May, 2004 1 commit
    • tree-gimple.c: Rename from tree-simple.c. · eadf906f
      	* tree-gimple.c: Rename from tree-simple.c.
      	* tree-gimple.h: Rename from tree-simple.h.
      	* c-gimplify.c: Rename from c-simplify.c
      	* Makefile.in, c-decl.c, gimple-low.c, gimplify.c,
      	langhooks.c, tree-alias-ander.c, tree-alias-common.c,
      	tree-complex.c, tree-dfa.c, tree-flow.h, tree-inline.c,
      	tree-into-ssa.c, tree-iterator.c, tree-mudflap.c,
      	tree-nested.c, tree-nomudflap.c, tree-outof-ssa.c, tree-sra.c,
      	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copyrename.c,
      	tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-pre.c, tree-ssa.c:
      	Update.
      
      cp/ChangeLog
      
      	* cp-gimplify.c: Rename from cp-simplify.c.
      	* Make-lang.in, optimize.c: Update.
      
      fortran/ChangeLog
      
      	* Make-lang.in, f95-lang.c, trans-array.c, trans-decl.c,
      	trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c,
      	trans.c: Rename tree-simple.[ch] to tree-gimple.[ch].
      
      java/ChangeLog
      
      	* Make-lang.in, expr.c, java-gimplify.c: Rename
      	tree-simple.[ch] to tree-gimple.[ch].
      
      From-SVN: r81829
      Diego Novillo committed
  14. 13 May, 2004 1 commit
  15. 10 May, 2004 1 commit
  16. 09 May, 2004 1 commit
    • re PR c/15007 (crash when including precompiled header with -include) · eecec698
      	PR 15007
      	* c-decl.c (current_file_decl): Rename to all_translation_units,
      	adjust comment.
      	(pop_scope): If popping file_scope, construct a
      	TRANSLATION_UNIT_DECL and make it the context of all the
      	symbols in the scope.
      	(push_file_scope): Don't construct a TRANSLATION_UNIT_DECL here.
      	(pushdecl): Clarify comment.  Do not set DECL_CONTEXT of
      	anything to current_file_decl.
      	(pushdecl_top_level): Likewise.
      	(store_parm_decls_newstyle): Adjust check for nested function.
      	(c_write_global_declarations): Update for renamed variable.
      
      From-SVN: r81655
      Zack Weinberg committed
  17. 29 Apr, 2004 1 commit
  18. 12 Apr, 2004 1 commit
    • c-decl.c (finish_decl): Make a decl_stmt for a variable-sized TYPE_DECL. · 1c9766da
      	* c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
      	TYPE_DECL.
      	* c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
      	* stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
      	* stor-layout.c (variable_size): Don't check for MINUS_EXPR.
      	Use skip_simple_arithmetic to find SAVE_EXPR.
      	(force_type_save_exprs, force_type_save_exprs_1): New functions.
      	* tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
      	Properly chain multiple pointers.
      	(copy_tree_r): Copy a TYPE_DECL.
      	* tree.c (variably_modified_type_p): Add some missing tests and
      	make some other minor changes.
      	* tree.h (force_type_save_exprs): New declaration.
      	* gcc.c-torture/execute/20040411-1.c: New test.
      
      From-SVN: r80629
      Richard Kenner committed
  19. 05 Apr, 2004 1 commit
    • c-decl.c (build_compound_literal): Use TYPE_READONLY. · 4f976745
      	* c-decl.c (build_compound_literal): Use TYPE_READONLY.
      	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
      	* objc/objc-act.c (adorn_decl, gen_declspecs): Likewise.
      	* c-typeck.c (decl_constant_value): Don't access DECL_INITIAL of a
      	PARM_DECL.
      	* calls.c (flags_from_decl_or_type): Use TYPE_READONLY and do so only
      	for a type.
      	* print-tree.c (print_node): Properly handle side-effects, readonly,
      	and constant flags.
      	* tree.c (build1_stat, build_expr_wfl): Only look at TREE_SIDE_EFFECTS
      	and TREE_CONSTANT if not a type.
      	* tree.h (IS_NON_TYPE_CODE_CLASS): New macro.
      	(IS_EXPR_CODE_CLASS): Write 'E', not 'e'.
      	(NON_TYPE_CHECK): New macro.
      	(TREE_SIDE_EFFECT, TREE_READONLY, TREE_CONSTANT: Add check.
      
      	* cp/init.c (decl_constant_value): Don't look at DECL_INITIAL
      	of PARM_DECL.
      	* cp/tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
      	or TREE_SIDE_EFFECTS of a type.
      
      	* ada/decl.c (gnat_to_gnu_entity): Use TYPE_READONLY.
      	* ada/utils.c (create_field_decl): Likewise.
      	* ada/utils2.c (build_unary_op, gnat_build_constructor): Likewise.
      
      From-SVN: r80430
      Richard Kenner committed
  20. 01 Apr, 2004 1 commit
    • builtins.c, [...]: Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED. · 8df83eae
      	* builtins.c, c-aux-info.c, c-common.c, c-cppbuiltin.c, c-decl.c:
      	Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
      	* c-format.c, c-opts.c, c-pretty-print.c, c-typeck.c: Likewise.
      	* calls.c, convert.c, dbxout.c, dojump.c, dwarf2out.c: Likewise.
      	* expmed.c, expr.c, fold-const.c, function.c, integrate.c: Likewise.
      	* optabs.c, sdbout.c, stmt.c, stor-layout.c, tree-dump.c: Likewise.
      	* tree.c, config/iq2000/iq2000.c, config/m32r/m32r.c: Likewise.
      	* config/mips/mips.c, config/rs6000/rs6000.c: Likewise.
      	* config/s390/s390.c, config/sparc/sparc.c, objc/objc-act.c: Likewise.
      	* stor-layout.c (layout_type, case COMPLEX_TYPE): Test for
      	REAL_TYPE, not INTEGER_TYPE.
      	(layout_type, case VECTOR_TYPE): Simplify code.
      	* tree.c (build_vector_type_for_mode): Remove dup unsigned setting.
      	* tree.h: Update comments.
      	(STRIP_NOPS): Use TYPE_UNSIGNED.
      	(TYPE_UNSIGNED): New macro.
      	(TYPE_TRAP_SIGNED): Remove now redundant check.
      	(SAVE_EXPR_NOPLACEHOLDER): Don't use TREE_UNSIGNED.
      
      	* cp/call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
      	* cp/class.c (check_bitfield_decl): Likewise.
      	* cp/cvt.c (type_promotes_to): Likewise.
      	* cp/decl.c (finish_enum): Likewise.
      	* cp/mangle.c (write_builtin_type): Likewise.
      	* cp/semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
      	* cp/typeck.c (type_after_usual_arithmetic_conversions): Likewise.
      	(build_binary_op): Likewise.
      
      	* f/com.c (ffecom_arrayref_): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
      	(ffecom_expr_): Likewise.
      
      	* java/jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
      
      	* treelang/treetree.c (tree_lang_signed_or_unsigned_type):
      	Use TYPE_UNSIGNED, not TREE_UNSIGNED.
      
      	* ada/decl.c (gnat_to_gnu_entity, make_type_from_size):
      	Use TYPE_UNSIGNED, not TREE_UNSIGNED.
      	* ada/trans.c (tree_transform, convert_with_check): Likewise.
      	* ada/utils.c (gnat_signed_or_unsigned_type): Likewise.
      	(build_vms_descriptor, unchecked_convert): Likewise.
      	* ada/utils2.c (nonbinary_modular_operation): Likewise.
      
      From-SVN: r80287
      Richard Kenner committed
  21. 30 Mar, 2004 1 commit
    • gengtype.c (create_option): New function. · 1431042e
      	* gengtype.c (create_option): New function.
      	* gengtype.h: Prototype it.
      	* gengtype-yacc.y (stringseq): New rule.
      	(option): Use create_option.  Add new bare ID production.  Use
      	stringseq, not STRING directly.
      
      	* alias.c, bitmap.c, c-decl.c, cgraph.h, cpplib.h, cselib.h
      	* dwarf2out.c, emit-rtl.c, function.h, lists.c, tree.h
      	* varray.h, config/alpha/alpha.c, cp/name-lookup.c, cp/parser.c
      	* f/com.c, java/builtins.c, java/expr.c, java/jcf.h, java/parse.h:
      	Use new shorter form of GTY markers.
      
      	* doc/gty.texi: Rewrite.
      
      From-SVN: r80091
      Zack Weinberg committed
  22. 28 Mar, 2004 2 commits
    • re PR c/14734 (Error recovery problem with undeclared array bounds) · 18d5f982
      	* c-decl.c: Verify that C_SIZEOF_STRUCT_LANG_IDENTIFIER is correct.
      	(struct c_binding, struct c_scope): Add chain_next
      	attributes to GTY markers.
      	(struct lang_identifier, struct lang_tree_node): Define
      	here...
      	* c-tree.h: ... not here.  No longer need to declare struct
      	c_binding either.  Do define C_SIZEOF_STRUCT_LANG_IDENTIFIER.
      	* c-lang.c, objc/objc-lang.c: Set LANG_HOOKS_IDENTIFIER_SIZE
      	to C_SIZEOF_STRUCT_LANG_IDENTIFIER.
      
      	PR 14734, 11944
      	* c-decl.c (get_parm_info): If error_mark_node is encountered
      	in the bindings chain, unbind and discard it; don't abort.
      	* testsuite/gcc.dg/noncompile/undeclared-2.c: New test.
      
      From-SVN: r80042
      Zack Weinberg committed
    • c-tree.h (C_DECL_REGISTER): New. · 5baeaac0
      	* c-tree.h (C_DECL_REGISTER): New.
      	* c-aux-info.c (gen_decl), c-decl.c (objc_mark_locals_volatile,
      	finish_decl, grokdeclarator, get_parm_info), c-typeck.c
      	(build_array_ref, c_mark_addressable): Set and use it.
      	* c-decl.c (grokdeclarator), c-typeck.c (c_mark_addressable):
      	Allow structures with volatile fields to be declared register.
      	Don't check TREE_ADDRESSABLE before warning about taking address
      	of register.
      	* c-decl.c (finish_decl): Don't allow structures with volatile
      	fields to be placed in named register.
      	* doc/trouble.texi: Remove reference to structures with volatile
      	fields in registers.
      
      testsuite:
      	* gcc.dg/940409-1.c: Remove XFAIL.
      	* gcc.dg/reg-vol-struct-1.c: New test.
      
      From-SVN: r80037
      Joseph Myers committed
  23. 23 Mar, 2004 1 commit
    • PR 12267, 12391, 12560, 13129, 14114, 14113 · f75fbaf7
      	* 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
      Zack Weinberg committed
  24. 22 Mar, 2004 1 commit
  25. 20 Mar, 2004 2 commits
  26. 18 Mar, 2004 1 commit
    • c-decl.c (grokdeclarator): Do not complain about redeclaring visible "static"… · 4ada538b
      c-decl.c (grokdeclarator): Do not complain about redeclaring visible "static" identifiers "extern" in a...
      
      	* c-decl.c (grokdeclarator): Do not complain about redeclaring
      	visible "static" identifiers "extern" in a local scope.
      
      	* dwarf2out.c (loc_descriptor_from_tree): Handle pre- and
      	post-increments/decrements.
      
      	* gcc.dg/local1.c: New test.
      
      	* gcc.dg/debug/dwarf2/c99-typedef1.c: New test.
      
      From-SVN: r79634
      Mark Mitchell committed
  27. 11 Mar, 2004 1 commit
  28. 09 Mar, 2004 1 commit
    • * c-decl.c (last_function_parms, last_function_parm_tags) · 77dbdb57
      	(last_function_parm_others, current_function_parms)
      	(current_function_parm_tags, current_function_parm_others):
      	Delete.
      	(ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES, ARG_INFO_OTHERS):
      	New macros.
      	(grokdeclarator): For function definitions, save the arg-info
      	block from the declarator in DECL_ARGUMENTS.
      	(grokparms): Do not write to last_function_parm*.  Use ARG_INFO_*
      	macros to operate on arg-info block.  Can assume ARG_INFO_PARMS
      	contains only PARM_DECLs.  Improve diagnostics.
      	(get_parm_info): Use ARG_INFO_* macros.  Improve comments and
      	diagnostics.  Disable some expensive checks if not ENABLE_CHECKING.
      	(store_parm_decls_newstyle): Take the function to operate on,
      	and an arg-info block, as arguments; don't get anything from
      	current_function_* globals.
      	(store_parm_decls_oldstyle): Likewise.
      	(store_parm_decls): Pass fndecl and its arg-info block down to
      	store_parm_decls_newstyle/oldstyle.  Send functions with empty
      	argument lists through store_parm_decls_newstyle to reduce
      	overhead.
      	(pushdecl): Comment on the problems with the call to copy_node.
      	Clear DECL_ARGUMENTS of the old node after copying it, if it
      	is an arg-info block instead of a chain of decls.
      	(start_function): Do not manipulate current_function_parm* or
      	last_function_parm*.
      
      	* testsuite/gcc.dg/noncompile/incomplete-2.c: Move dg-error to
      	proper line.
      
      From-SVN: r79206
      Zack Weinberg committed
  29. 04 Mar, 2004 1 commit
  30. 27 Feb, 2004 1 commit
  31. 26 Feb, 2004 1 commit
  32. 17 Feb, 2004 1 commit
  33. 16 Feb, 2004 1 commit
  34. 12 Feb, 2004 1 commit
    • debug.h (struct gcc_debug_hooks): Add type_decl field. · 21d13d83
      	* debug.h (struct gcc_debug_hooks): Add type_decl field.
      	(debug_nothing_tree_int): Prototype.
      	(dwarf_debug_hooks): Delete, unused.
      	* debug.c (do_nothing_debug_hooks): Update.
      	(debug_nothing_tree_int): New function.
      	* langhooks.h (struct lang_hooks_for_decls):
      	Remove builtin_type_decls field.
      	* langhooks-def.h (LANG_HOOKS_BUILTIN_TYPE_DECLS): Delete.
      	(LANG_HOOKS_DECLS): Update.
      	* toplev.c (rest_of_decl_compilation, rest_of_type_compilation):
      	Use debug_hooks->type_decl.
      	* dbxout.c (preinit_symbols): New static.
      	(dbx_debug_hooks, xcoff_debug_hooks): Update.
      	(dbxout_init): Don't call DBX_OUTPUT_STANDARD_TYPES or
      	lang_hooks.decls.builtin_type_decls.  Do scan preinit_symbols
      	for symbols to output.
      	(dbxout_type_decl): New function.
      	(dbxout_symbol): If called before dbxout_init has run, queue
      	the symbol for later.  Apply DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER
      	to TYPE_DECLs before emitting them.
      	* xcoffout.c (assign_type_number): Delete.
      	(xcoff_type_numbers): New static table.
      	(xcoff_assign_fundamental_type_number): New function.
      	* xcoffout.h: Define DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER, not
      	DBX_OUTPUT_STANDARD_TYPES.  Remove unnecessary #ifdefs.
      	* sdbout.c: Include varray.h.
      	(deferred_global_decls): New static.
      	(sdb_debug_hooks): Update.
      	(sdbout_global_decl): If we can't emit something right now,
      	remember it in deferred_global_decls.
      	(sdbout_finish): Just scan deferred_global_decls; don't call getdecls.
      	(sdbout_init): Initialize deferred_global_decls.
      	* Makefile.in: Update dependencies of sdbout.o.
      	* dwarf2out.c (dwarf2out_type_decl): New function.
      	(dwarf2_debug_hooks): Update.
      	* vmsdbgout.c (vmsdbg_debug_hooks): Update.
      	* c-decl.c (getdecls): Just return 0.
      	(check_for_loop_decls): Don't use getdecls.
      	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
      	* c-objc-common.c (c_objc_common_finish_file): Don't use getdecls.
      cp:
      	* cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
      	* cp-tree.h: Don't declare cxx_builtin_type_decls.
      	* decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
      	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
      
      From-SVN: r77730
      Zack Weinberg committed