Commit Graph

175 Commits

Author SHA1 Message Date
Nathan Sidwell
341c100fc5 cfganal.c (flow_depth_first_order_compute, [...]): Use gcc_assert or gcc_unreachable.
* cfganal.c (flow_depth_first_order_compute, dfs_enumerate_from,
	cfgbuild.c, inside_basic_block_p, control_flow_insn_p,
	make_label_edge, make_edges, find_basic_blocks_1): Use gcc_assert
	or gcc_unreachable.
	* cfg.c (clear_edges, initialize_bb_rbi, compact_blocks,
	remove_edge, alloc_aux_for_blocks, free_aux_for_blocks,
	alloc_aux_for_edges, free_aux_for_edges): Likewise.
	* cfgcleanup.c (try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps): Likewise.
	* cfgexpand.c (expand_gimple_cond_expr,
	expand_gimple_tailcall): Likewise.
	* cfghooks.c (duplicate_block): Likewise.
	* cfglayout.c (record_effective_endpoints,
	insn_locators_initialize, change_scope, fixup_reorder_chain,
	verify_insn_chain, fixup_fallthru_exit_predecessor,
	duplicate_insn_chain, cfg_layout_finalize): Likewise.
	* cfgloopanal.c (check_irred): Likewise.
	* cfgloop.c (superloop_at_depth, flow_loops_free,
	flow_loop_entry_edges_find, flow_loops_find,
	flow_loop_outside_edge_p, get_loop_body,
	get_loop_body_in_dom_order, get_loop_body_in_bfs_order,
	get_loop_exit_edges, num_loop_branches, cancel_loop,
	verify_loop_structure): Likewise.
	cfgloopmanip.c (find_path, remove_path, loop_delete_branch_edge,
	duplicate_loop_to_header_edge, create_preheader,
	create_loop_notes): Likewise.
	* cfgrtl.c (delete_insn, try_redirect_by_replacing_jump,
	edirect_branch_edge, force_nonfallthru_and_redirect,
	rtl_split_edge, insert_insn_on_edge, commit_one_edge_insertion,
	commit_edge_insertions, commit_edge_insertions_watch_calls,
	purge_dead_edges, cfg_layout_redirect_edge_and_branch,
	cfg_layout_redirect_edge_and_branch_force,
	cfg_layout_merge_blocks, rtl_flow_call_edges_add): Likewise.
	* cgraph.c (cgraph_node, cgraph_create_edge, cgraph_remove_edge,
	cgraph_redirect_edge_callee, cgraph_global_info, cgraph_rtl_info,
	cgraph_varpool_node): Likewise.
	* cgraphunit.c (cgraph_finalize_function,
	cgraph_finalize_compilation_unit, cgraph_mark_functions_to_output,
	cgraph_expand_function, cgraph_remove_unreachable_nodes,
	cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
	cgraph_mark_inline, cgraph_expand_all_functions,
	cgraph_build_static_cdtor): Likewise.
	* combine.c  (do_SUBST, try_combine, subst, combine_simplify_rtx,
	simplify_logical, distribute_notes, insn_cuid): Likewise.
	* conflict.c (conflict_graph_add, print_conflict): Likewise.
	* coverage.c (rtl_coverage_counter_ref, tree_coverage_counter_ref,
	coverage_checksum_string): Likewise.
	* cse.c (make_new_qty, make_regs_eqv, insert, invalidate,
	hash_rtx, exp_equiv_p, cse_basic_block, count_reg_usage,
	cse_cc_succs, cse_condition_code_reg): Likewise.
	* cselib.c (entry_and_rtx_equal_p, remove_useless_values,
	rtx_equal_for_cselib_p, wrap_constant, cselib_hash_rtx,
	new_cselib_val, cselib_subst_to_values, cselib_invalidate_regno,
	cselib_record_set): Likewise.

From-SVN: r87145
2004-09-07 15:46:53 +00:00
Paolo Bonzini
9f8628bacd Unify the management of RTL and tree-level dump files.
2004-09-06  Paolo Bonzini  <bonzini@gnu.org>

	Unify the management of RTL and tree-level dump files.

	* cfgexpand.c (tree_expand_cfg): Fix incorrect comment.
	Don't print function name to the dump file, the pass manager
	would do this for us. Add code from the top of
	rest_of_compilation, up to the initial RTL dump.
	* passes.c (rest_of_handle_jump): Call fixup_tail_calls and
	close the DFI_sibling dump file.
	(rest_of_compilation): Don't do that here.  Remove code up to the
	initial RTL dump.
	(init_optimization_passes): Remove.
	(pass_rest_of_compilation): Change pass name to NULL.
	* toplev.c (lang_dependent_init): Do not use an empty dump file prefix.
	Do not call init_optimization_passes.
	* toplev.h (init_optimization_passes): Remove.

	* graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
	finish_graph_dump_file): Remove SUFFIX parameter.
	* graph.h (print_rtl_graph_with_bb, clean_graph_dump_file,
	finish_graph_dump_file): Likewise.

	* tree-pass.h (struct tree_opt_pass): Add `letter' field.
	* cfgexpand.c (pass_expand): Adjust.
	* gimple-low.c (pass_lower_cf, pass_remove_useless_vars): Adjust.
	* passes.c (pass_rest_of_compilation): Adjust.
	* predict.c (pass_profile): Adjust.
	* tree-alias-common.c (pass_build_pta, pass_del_pta): Adjust.
	* tree-cfg.c (pass_build_cfg, pass_remove_useless_stmts,
	pass_split_crit_edges, pass_warn_function_return): Adjust.
	* tree-complex.c (pass_lower_vector_ssa, pass_pre_expand): Adjust.
	* tree-dfa.c (pass_referenced_vars): Adjust.
	* tree-eh.c (pass_lower_eh): Adjust.
	* tree-if-conv.c (pass_build_ssa): Adjust.
	* tree-into-ssa.c (pass_build_ssa): Adjust.
	* tree-mudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
	* tree-nomudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
	* tree-nrv.c (pass_nrv): Adjust.
	* tree-optimize.c (pass_gimple, pass_all_optimizations,
	pass_cleanup_cfg_post_optimizing, pass_free_datastructures,
	pass_init_datastructures): Adjust.
	* tree-outof-ssa.c (pass_del_ssa): Adjust.
	* tree-profile.c (pass_tree_profile): Adjust.
	* tree-sra.c (pass_sra): Adjust.
	* tree-ssa-alias.c (pass_may_alias): Adjust.
	* tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Adjust.
	* tree-ssa-copyrename.c (pass_rename_ssa_copies): Adjust.
	* tree-ssa-dce.c (pass_dce, pass_cd_dce): Adjust.
	* tree-ssa-dom.c (pass_dominator): Adjust.
	* tree-ssa-dse.c (pass_dse): Adjust.
	* tree-ssa-forwprop.c (pass_forwprop): Adjust.
	* tree-ssa-if-conv.c (pass_if_conversion): Adjust.
	* tree-ssa-loop-ch.c (pass_ch): Adjust.
	* tree-ssa-loop.c (pass_loop, pass_loop_init, pass_lim,
	pass_loop_done, pass_complete_unroll, pass_iv_canon,
	pass_iv_optimize, pass_vectorize): Adjust.
	* tree-ssa-phiopt.c (pass_phiopt): Adjust.
	* tree-ssa-pre.c (pass_pre, pass_fre): Adjust.
	* tree-ssa.c (pass_redundant_phi, pass_early_warn_uninitialized,
	pass_late_warn_uninnitialized): Adjust.
	* tree-tailcall.c (pass_tail_recursion, pass_tail_calls): Adjust.

	* Makefile.in (tree-dump.o): Add new dependencies.
	* cgraph.c (cgraph_remove_node): TDF_all -> TDF_tree_all.
	* cgraphunit.c (cgraph_preserve_function_body_p, cgraph_optimize):
	Likewise.
	* toplev.c (dump_file_name): New.
	* tree-dump.c (dump_enable_all): Add LETTER parameter.
	(struct dump_file_info): Add NUM and LETTER fields.
	(dump_files): Adjust and add RTL dump files.
	(dump_register): Add NUM and LETTER fields.
	(get_dump_file_name, dump_initialized_p, enable_rtl_dump_file): New.
	(dump_begin): Use get_dump_file_name.
	(dump_switch_p_1): Adjust call to dump_enable_all.
	* tree-dump.h (dump_register): Adjust prototype.
	* tree-optimize.c (register_one_dump_file): Take dump file index.
	Support flags for RTL dumps.
	(register_dump_files): Fill in NUM field of struct dump_file_info.
	Track properties both when the gate is executed and when it is not.
	(execute_todo): Dump RTL.  Add PROPERTIES parameter.
	(execute_one_pass): Pass properties to execute_todo.  Handle VCG
	dumps of RTL.
	* tree-pass.h (dump_file_name): New.
	* tree.h (TDF_TREE, TDF_RTL, get_dump_file_name, dump_initialized_p):
	New.

	* Makefile.in (passes.o): Add new dependencies.
	* passes.c (struct dump_file_info, enum dump_file_index,
	dump_file_tbl, init_optimization_passes): Remove.
	(open_dump_file, close_dump_file): Use tree-dumping infrastructure.
	(rest_of_handle_new_regalloc, rest_of_handle_old_regalloc): Use
	dump_enabled_p.
	(finish_optimization_passes): Update finish_graph_dump_file loop.
	(enable_rtl_dump_file): Remove.
	* tree-dump.c (dump_files): Adjust and add RTL dump files.
	(enable_rtl_dump_file): Add here.
	* tree.h (enum tree_dump_index): Add RTL dump file indices.
	* doc/invoke.texi (Debugging options): Document new RTL debugging
	options.  Update.

From-SVN: r87113
2004-09-06 10:08:17 +00:00
Kazu Hirata
2a7e31df70 c-common.c, [...]: Fix comment typos.
* c-common.c, cfgexpand.c, cgraphunit.c, defaults.h,
	et-forest.c, expr.c, gimplify.c, global.c, gthr-lynx.h,
	hard-reg-set.h, modulo-sched.c, optabs.c, postreload-gcse.c,
	tree-data-ref.c, tree-flow.h, tree-if-conv.c, tree-inline.c,
	tree-sra.c, tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
	tree-ssa-loop-niter.c, tree-ssa-operands.c,
	tree-ssa-operands.h, tree-ssa-propagate.c,
	tree-ssa-propagate.h, tree-ssa-threadupdate.c, value-prof.c,
	vec.c, vec.h: Fix comment typos.  Follow spelling conventions.

From-SVN: r87104
2004-09-05 15:24:15 +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
Richard Kenner
a35461410a Remove obsolete text in comment.
From-SVN: r85147
2004-07-25 10:39:42 -04:00
Richard Henderson
b785f485ec c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P on the RESULT_DECL.
* c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P
        on the RESULT_DECL.
        * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
        * integrate.c (copy_decl_for_inlining): Copy DECL_ARTIFICIAL and
        DECL_IGNORED_P to new decl.
ada/
        * utils.c (create_subprog_decl): Set DECL_ARTIFICIAL and
        DECL_IGNORED_P on RESULT_DECL.
cp/
        * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
        DECL_IGNORED_P on RESULT_DECL.
        * semantics.c (finalize_nrv): Copy them too.
fortran/
        * trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL
        and DECL_IGNORED_P on RESULT_DECL.
        (gfc_generate_constructors): Likewise.
java/
        * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.

From-SVN: r85145
2004-07-25 01:10:28 -07:00
Frank Ch. Eigler
35b6fdcfc2 * Fix for g++/15861
2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* cgraphunit.c (cgraph_build_static_cdtor): Add priority argument.
	* cgraph.h: Update declaration.
	* c-decl.c (build_cdtor): Update call with default priority.
	* coverage.c (create_coverage): Ditto.
	* tree-mudflap.c (mf_init_fndecl): New tree.
	(mudflap_init): Set it.
	(mudflap_register_call): Arrange to call __mf_init before the first
	__mf_register call.
	(mudflap_finish_file): Mark the mudflap static initializer as extra
	high priority, to beat all C++ static constructors.

2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* jcf-parse.c (java_emit_static_constructor): Specify default
	priority.

From-SVN: r84760
2004-07-15 17:33:01 +00:00
Richard Henderson
c9b9aa64e9 cgraph.h (cgraph_build_static_cdtor): Declare.
* cgraph.h (cgraph_build_static_cdtor): Declare.
        * cgraphunit.c (cgraph_build_static_cdtor): New.
        * c-objc-common.c (build_cdtor): Use it.
        * coverage.c (create_coverage): Likewise.
        * libfuncs.h (LTI_gcov_init, gcov_init_libfunc): Remove.
        * optabs.c (init_optabs): Don't set gcov_init_libfunc.
java/
        * class.c (registerClass_libfunc): Remove.
        (init_class_processing): Don't set it.
        (emit_register_classes): Take list_p parameter.  Fill it in
        with _Jv_RegisterClass calls.
        * decl.c (java_init_decl_processing): Don't call
        init_resource_processing.
        * jcf-parse.c (java_emit_static_constructor): New.
        (java_parse_file): Call it.
        * resource.c (registerResource_libfunc): Remove.
        (init_resource_processing): Remove.
        (write_resource_constructor): Take list_p parameter.  Fill it in
        with _Jv_RegisterResource calls.
        * java-tree.h: Update prototypes.

From-SVN: r83958
2004-07-01 00:51:12 -07:00
Richard Kenner
7120d04625 Minor whitespace changes
From-SVN: r83613
2004-06-24 18:42:26 -04: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
Eric Botcazou
2ddbba8007 cgraphunit.c (cgraph_decide_inlining): Adjust dump lines in always_inline pass.
* cgraphunit.c (cgraph_decide_inlining): Adjust dump lines in
	always_inline pass.

From-SVN: r82668
2004-06-06 13:03:08 +00:00
Kazu Hirata
9cf737f89f bb-reorder.c, [...]: Fix comment formatting.
* bb-reorder.c, builtins.c, c-common.c, c-gimplify.c,
	c-incpath.c, cgraphunit.c, ddg.c, defaults.h, dwarf2out.c,
	expmed.c, flags.h, gcc.c, gensupport.c, gimplify.c, global.c,
	passes.c, reg-stack.c, target.h, toplev.c, tree-alias-ander.c,
	tree-alias-common.c, tree-cfg.c, tree-complex.c, tree-dfa.c,
	tree-eh.c, tree-mudflap.c, tree-mudflap.h, tree-outof-ssa.c,
	tree-phinodes.c, tree-pretty-print.c, tree-ssa-alias.c,
	tree-ssa-ccp.c, tree-ssa-live.c, tree-ssa-live.h,
	tree-ssa-pre.c, tree.h, value-prof.h, varasm.c: Fix comment
	formatting.

From-SVN: r82463
2004-05-30 18:32:31 +00:00
Kazu Hirata
1ea7e6ad84 c-common.c, [...]: Fix comment typos.
* c-common.c, calls.c, cfgcleanup.c, cgraph.c, cgraphunit.c,
	ddg.c, ddg.h, df.c, df.h, except.c, expr.c, flags.h,
	fold-const.c, gcc.c, gimplify.c, haifa-sched.c,
	modulo-sched.c, tree-inline.c, tree-into-ssa.c, tree-nested.c,
	tree-nrv.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-live.c,
	tree-ssa-loop.c, tree-ssa-pre.c, tree-tailcall.c, tree.h: Fix
	comment typos.  Follow spelling conventions.

From-SVN: r82439
2004-05-30 07:12:58 +00:00
Zack Weinberg
6f312d18d4 [multiple changes]
2004-05-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-common.c (c_common_truthvalue_conversion): Handle
	UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
	ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
	i.e. set the type to truthvalue_type_node and return.

2004-05-22  Zack Weinberg  <zack@codesourcery.com>

       * tree.h (struct tree_decl): Add possibly_inlined bit.
	(DECL_POSSIBLY_INLINED): New accessor macro.
	* cgraph.h: Remove declaration of cgraph_inline_hash.
	* cgraph.c: Remove definition of cgraph_inline_hash.
	(hash_node): Revert to hashing DECL_UID.
	(eq_node): Take two pointers to cgraph_node structures.
	Compare DECL_UIDs.
	(cgraph_remove_node): Pass the node directly to htab_find_slot.
	(cgraph_varpool_hash_node): Rename hash_varpool_node;
	hash on DECL_UID.
	(eq_cgraph_varpool_node): Rename eq_varpool_node; take two
	pointers to cgraph_varpool_node structures; compare DECL_UIDs.
	(cgraph_node): Allocate a temporary node on the stack, fill in
	its DECL field, and pass that to htab_find_slot.
	(cgraph_varpool_node): Likewise.
	(cgraph_function_possibly_inlined_p): If global info is ready,
	return the DECL_POSSIBLY_INLINED bit.
	* cgraphunit.c (cgraph_mark_inline_edge): Set DECL_POSSIBLY_INLINED
	instead of mucking with cgraph_inline_hash.

From-SVN: r82140
2004-05-22 18:16:39 +00:00
Zack Weinberg
bb9a388dad * cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
(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
2004-05-19 01:28:56 +00:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Jan Hubicka
59af0b6aa3 re PR rtl-optimization/14980 ([unit-at-a-time] complex_io.cc:69: error: Inlined_to pointer is set but no predecesors found--causes ICE)
PR opt/14980
	* cgraphunit.c (cgraph_remove_unreachable_nodes): Deal properly with
	inline clones.

From-SVN: r81540
2004-05-05 20:55:02 +00:00
Kazu Hirata
1ae58c30e2 bb-reorder.c, [...]: Fix comment typos.
* bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
	cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
	reg-stack.c, varasm.c, config/alpha/ev4.md,
	config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
	config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
	config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
	config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
	config/ia64/itanium2.md, config/ip2k/ip2k.c,
	config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
	config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
	comment typos.

From-SVN: r81345
2004-04-30 16:27:30 +00:00
Kazu Hirata
2b8a92de97 builtins.c, [...]: Fix comment typos.
* builtins.c, cgraph.c, cgraphunit.c, final.c, fold-const.c:
	Fix comment typos.

From-SVN: r81291
2004-04-29 15:39:12 +00:00
Jan Hubicka
902edd367b re PR c/15004 ([unit-at-a-time] no warning for unused paramater in static function)
* gcc.dg/unused-6.c: New test.

	PR c/15004
	* function.c (do_warn_unused_parameter): Break out form ...
	(expand_function_end): ... here; warn only when not using cgraphunit.
	* function.h (do_warn_unused_parameter): Declare.
	* cgraphunit.c: Include function.h.
	(cgraph_finalize_function): Do unused parameter warning.
	* Makefile.in (cgraphunit.o): Depend on function.h

From-SVN: r81260
2004-04-28 20:40:55 +00:00
Jan Hubicka
18c6ada9b2 cgraph.c: Add overall comment.
* cgraph.c: Add overall comment.
	(cgraph_inline_hash): New global variable.
	(cgraph_create_node): Break out from ...
	(cgraph_node): ... here.
	(cgraph_edge): New function.
	(cgraph_create_edge): New CALL_EXPR argument; some sanity checking.
	(cgraph_remove_edge): Accept edge, intead of source and destination.
	(cgraph_redirect_edge_callee): New.
	(cgraph_remove_node): Update all new datastructures.
	(cgraph_record_call, cgraph_remove_call): Kill.
	(dump_cgraph_node): Break out from ... ; dump new datastructures.
	(dump_cgraph): ... here.
	(cgraph_function_possibly_inlined_p): Use new hashtable.
	(cgraph_clone_edge, cgraph_clone_node): New.
	* cgraph.h: Include hashtab.h
	(struct cgraph_global_info): Kill cloned_times, inline_once, will_be_output
	fields, add inlined_to pointer.
	(cgraph_node): Add pointer to next_clone.
	(cgraph_remove_edge, cgraph_create_edge): Update prototype.
	(cgraph_remove_call, cgraph_record_call): Kill.
	(cgraph_inline_hash): Declare.
	(dump_cgraph_node, cgraph_edge, cg4raph_clone_edge, cgraph_clone_node,
	cgraph_redirect_edge_callee): Declare.
	(cgraph_create_edges, cgraph_inline_p): Update prorotype.
	(cgraph_preserve_function_body_p, verify_cgraph, verify_cgraph_node,
	cgraph_mark_inline_edge, cgraph_clone_inlined_nodes): Declare.
	* cgraphunit.c: Add overall comment.
	(cgraph_optimize_function): Kill.
	(cgraph_assemble_pending_functions): Do not assemble inline clones.
	(cgraph_finalize_function): Update call of cgraph_remove_node
	(record_call_1): Record call sites.
	(cgraph_create_edges): Accept node instead of decl argument.
	(error_found): New static variable.
	(verify_cgraph_node_1, verify_cgraph_node, verify_cgraph): New functions.
	(cgraph_analyze_function): Update for new datastructures.
	(cgraph_finalize_compilation_unit): Plug memory leak.
	(cgraph_optimize_function): Kill.
	(cgraph_expand_function): Do not use cgraph_optimize_function.
	(INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into,
	cgraph_inlined_callees): Kill.
	(cgraph_remove_unreachable_nodes): Verify cgraph; update handling of
	clones.
	(estimate_growth): Simplify.
	(cgraph_clone_inlined_nodes): New function.
	(cgraph_mark_inline_edge): Re-implement.
	(cgraph_mark_inline): Likewise.
	(cgraph_check_inline_limits): Simplify.
	(cgraph_recursive_inlining_p): New.
	(update_callee_keys): Break out from ...
	(cgraph_decide_inlining_of_small_functions): ... here; simplify.
	(cgraph_decide_inlining, cgraph_decide_inlining_incrementally):
	Likewise.
	(cgraph_expand_all_functions):  Remove inline clones from the ordered
	list.
	(cgraph_preserve_function_body_p): New predicate.
	(cgraph_optimize): Verify cgraph.
	* function.h (struct function): Add fields saved_tree/saved_args.
	* timevar.def (TV_CGRAPH_VERIFY): Use verifier.
	* toplev.c (rest_of_compilation): Do not free cfun.
	* tree-inline.c: Include function.h
	(struct inline_data): Add saving_p field; replace decl/current_decl by
	node/current_node.
	(insert_decl_map): New function.
	(copy_body_r): Handle saving; update cgraph datastructure.
	(copy_body): Handle recursive inlining.
	(initialize_inlined_parameters): Likewise.
	(expand_call_inline): Propagate node attributes; update cgraph.
	(optimize_inline_calls): Verify that datastructure still match.
	(save_body): New function.
	* tree-inline.h (save_body): New.
	* tree-optimize.c (tree_rest_of_compilation): preserve function body; do inlining.
	* langhooks-def.c (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): New.
	* langhooks.c (lang_hooks): Add update_decl_after_saving.

	* cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
	* cp-tree.h (cp_update_decl_after_saving): Declare.
	* tree.c (cp_update_decl_after_saving): Define.

	* Make-lang.in (com.o): Add dependnecy on function.h
	* com.c: Include function.h
	(finish_function): Clear DECL_STRUCT_FUNCTION.

	* utils.c: Include function.h
	(end_subprog_body): Clear DECL_STRUCT_FUNCTION.

From-SVN: r80334
2004-04-01 23:28:15 +00:00
Kazu Hirata
d1a6adeb67 c-common.c, [...]: Fix comment typos.
* c-common.c, cfgcleanup.c, cgraphunit.c, c-pretty-print.c,
	expmed.c, ggc-common.c, jump.c, passes.c, recog.c, regmove.c,
	reorg.c, tree.h: Fix comment typos.

From-SVN: r79730
2004-03-20 05:21:41 +00:00
Roger Sayle
ae2bcd98fa alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) () with lang_hooks.foo ().
* alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) ()
	with lang_hooks.foo ().
	* builtins.c (expand_builtin_va_arg): Likewise.
	* c-common.c (fname_as_string, c_common_truthvalue_conversion,
	c_common_type_for_mode, c_common_nodes_and_builtins,
	handle_mode_attribute, handle_vector_size_attribute): Likewise.
	* c-convert.c (convert): Likewise.
	* c-format.c (check_format_types): Likewise.
	* c-objc-common.c (c_tree_printer): Likewise.
	* c-typeck.c (build_unary_op, build_conditional_expr,
	build_binary_op): Likewise.
	* calls.c (try_to_integrate, expand_call,
	emit_library_call_value_1): Likewise.
	* cgraph.c (cgraph_node_name, cgraph_function_possibly_inlined_p):
	Likewise.
	* cgraphunit.c (record_call_1, cgraph_analyze_function,
	cgraph_expand_function): Likewise.
	* convert.c (convert_to_pointer, convert_to_integer): Likewise.
	* coverage.c (build_fn_info_type, build_ctr_info_type,
	build_gcov_info, create_coverage): Likewise.
	* dbxout.c (dbxout_init): Likewise.
	* diagnostic.c (diagnostic_report_current_function): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (dwarf2_name): Likewise.
	* except.c (init_eh): Likewise.
	* explow.c (expr_size, int_expr_size): Likewise.
	* expmed.c (make_tree, const_mult_add_overflow_p, expand_mult_add):
	Likewise.
	* expr.c (store_expr, store_constructor, safe_from_p,
	expand_expr_real, do_store_flag, try_casesi): Likewise.
	* function.c (push_function_context_to, pop_function_context_from,
	free_after_parsing, assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack, allocate_struct_function, current_function_name):
	Likewise.
	* integrate.c (copy_decl_for_inlining, expand_inline_function):
	Likewise.
	* langhooks.c (lhd_clear_binding_stack, write_global_declarations,
	lhd_print_error_function): Likewise.
	* opts.c (handle_option, decode_options): Likewise.
	* passes.c (open_dump_file): Likewise.
	* print-tree.c (print_node): Likewise.
	* stmt.c (expand_fixup, fixup_gotos, expand_asm_operands,
	expand_decl_cleanup, emit_case_nodes): Likewise.
	* stor-layout.c (variable_size): Likewise.
	* toplev.c (announce_function, wrapup_global_declarations,
	check_global_declarations, compile_file, default_tree_printer,
	process_options, lang_dependent_init, finalize): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (remap_decl, remap_block, copy_body_r,
	initialize_inlined_parameters, declare_return_variable,
	inlinable_function_p, expand_call_inline, optimize_inline_calls,
	walk_tree, copy_tree_r): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree.c (decl_assembler_name, tree_size, size_in_bytes, staticp,
	unsafe_for_reeval, get_unwidened, get_narrower, get_callee_fndecl,
	variably_modified_type_p, dump_tree_statistics): Likewise.
	* varasm.c (assemble_variable, compare_constant, copy_constant,
	force_const_mem, compute_reloc_for_constant, output_constant,
	output_addressed_constants, initializer_constant_valid_p): Likewise.

From-SVN: r79481
2004-03-14 22:26:14 +00:00
Steven Bosscher
1da326c335 (c-decl.c, [...]): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
* (c-decl.c, c-semantics.c, calls.c, cgraph.c, cgraphunit.c,
        function.c, integrate.c, print-tree.c, toplev.c, tree-optimize.c,
        tree.h): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
        * ada/utils.c: Likewise.
        * cp/decl.c: Likewise.
        * f/com.c: Likewise.
        * java/class.c: Likewise.

From-SVN: r77985
2004-02-17 21:33:43 +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
Aldy Hernandez
e0cc7f73ab * cgraphunit.c (cgraph_postorder): Fix typo in comment.
From-SVN: r77257
2004-02-04 17:38:22 +00:00
Jan Hubicka
d173e68599 re PR c++/12850 (memory consumption for heavy template instantiations tripled since 3.3)
PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.

From-SVN: r76822
2004-01-29 00:34:09 +00: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
Jan Hubicka
9b0436b739 cgraph.c (cgraph_remove_node): Fix removal from linked list.
* cgraph.c (cgraph_remove_node): Fix removal from linked list.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Clear next_needed
	list.
	(cgraph_remove_unreachable_nodes): New function
	(cgraph_decide_inlining_of_small_function): Fix pasto.
	(cgraph_decide_inlining_incrementally): Fix pasto.
	(cgrpah_decide_inlining): Likewise; remove unreachable nodes.

From-SVN: r76142
2004-01-19 09:43:53 +00:00
Jan Hubicka
95c755e90f cgraph.c (create_edge): Use local.redefined_extern_inline.
* cgraph.c (create_edge): Use local.redefined_extern_inline.
	* cgraph.h (cgraph_local_info): Sort fields by size; add
	redefined_extern_inline
	(cgraph_global_info): Sort fields by size.
	(cgraph_node): Likewise.
	* cgraphunit.c (cgraph_finalize_function): Se
	local.redefined_extern_inline on redefinition.
	(cgraph_analyze_function): Use it; fix formating.

From-SVN: r75890
2004-01-14 22:54:50 +00:00
Jan Hubicka
d34cb6a149 Partial fix PR c++/12850
Partial fix PR c++/12850
	* cgraphunit.c (cgraph_finalize_function): Always ggc_collect when
	at zero nest level.

	* decl2.c (mark_used): Do not proactively instantiate templates
	when compiling in unit-at-a-time or not optimizing.
	* optimize.c (maybe_clone_body): Do not increase function depth.

From-SVN: r75823
2004-01-13 23:59:19 +00:00
Jan Hubicka
2d3270129f cgraphunit.c (cgraph_optimize_function): Always do optimize_inline_calls when there is always_inline callee.
* cgraphunit.c (cgraph_optimize_function):  Always do
	optimize_inline_calls when there is always_inline callee.
	(cgraph_decide_inlining): Fix formating.
	* tree-inline.c (inlinable_function_p): Do sorry for alwaysinline
	functions.
	(expand_call_inline): Likewise.
	* toplev.h (sorry): Fix prototype.

	* gcc.dg/always_inline.c: New test.
	* gcc.dg/debug/20031231-1.c: Fix.

From-SVN: r75781
2004-01-13 01:35:27 +00:00
Jan Hubicka
6242fcd8e4 * cgraphunit.c (cgraph_decide_inlining): Fix typo.
From-SVN: r75560
2004-01-08 22:57:49 +00:00
Jan Hubicka
dc0bfe6a35 Makefile.in (cgraph.o, [...]): Add intl.h dependency.
* Makefile.in (cgraph.o, cgraphunit.o): Add intl.h dependency.
	* cgraph.c (create_edge, dump_cgraph): Update to use inline_failed
	* cgraph.h (cgraph_edge): Replace inline_call by inline_failed
	(cgraph_inline_p): Add extra argument reason.
	* cgraphunit.c: Minor formating fixes.
	cgraph_first_inlined_callee): New functions.
	(record_call_1): Record builtins too.
	(cgraph_analyze_function): Update inline_failed messages.
	(cgraph_mark_functions_to_output, cgraph_expand_function, cgraph_inlined_into,
	cgraph_inlined_callees, cgraph_estimate_growth): Update to use inline_failed.
	(cgraph_check_inline_limits): Likewise; Add argument reason.
	(cgraph_set_inline_failed): New static function.
	(cgraph_decide_inlining_of_small_function, cgraph_decide_inlining): Set
	reasons.
	(cgraph_inline_p): Add new argument reason.
	* tree-inline.c (expand_call_inline):  Update warning.

From-SVN: r75391
2004-01-04 14:39:13 +00:00
Jan Hubicka
8b6bd5d717 cgraphunit.c (cgraph_optimize_function): Call optimize_inline_calls when there is nothing to inline but warnings are...
* cgraphunit.c (cgraph_optimize_function):  Call optimize_inline_calls
	when there is nothing to inline but warnings are requested.
	(cgraph_decide_inlining):  Fix memory leak.

From-SVN: r75333
2004-01-02 18:06:16 +00:00
Jan Hubicka
b684a3df8e re PR rtl-optimization/13473 (cc1 segfault w/-march=pentium4)
PR opt/13473
	* recog.c (validate_replace_rtx_1):  Take care for RTL sharing inside
	ASM input operands

	PR opt/12617
	* toplev.c (dump_file_index): Reorder ce3 and bbro.
	(dump_file): Likewise.
	(rest_of_compilation): Likewise.

	PR debug/13367
	* cgraph.c (cgraph_function_possibly_inlined):  Even with
	flag_really_no_inline we inline always_inline functions.
	* cgraphunit.c (cgraph_analyze_function): Clear inlinable flag
	for non-always_inline functions when there is flag_really_no_inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_optimize_function): Check whether something got inlined.
	* c-objc-common.c (c_disregard_inline_limits): Do not always inline
	extern inline functions when not inlining.

	* opts.c (decode_options):  Disable crossjumping at -O1
	* invoke.texi (-O1): Document change.

	* gcc.dg/debug/20031231-1.c: New.
	* gcc.c-torture/compile/20040101-1.c: New.
	* gcc.dg/dwarf-die-[1-7].c: New.

From-SVN: r75303
2004-01-01 13:59:02 +00:00
Kazu Hirata
d91edf86b0 ChangeLog.7: Fix comment typos.
* ChangeLog.7: Fix comment typos.
	* c-common.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cgraphunit.c: Likewise.
	* et-forest.h: Likewise.
	* expr.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-zone.c: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* pretty-print.h: Likewise.
	* regrename.c: Likewise.
	* rtl.h: Likewise.
	* sched-rgn.c: Likewise.
	* target.h: Likewise.
	* value-prof.c: Likewise.
	* web.c: Likewise.

From-SVN: r73795
2003-11-21 06:52:23 +00:00
Jan Hubicka
bd04ab3253 cgraphunit.c (cgraph_expand_function): Use cgraph_possibly_inlined_p.
* cgraphunit.c (cgraph_expand_function): Use
	cgraph_possibly_inlined_p.
	* tree-optimize.c (tree_rest_of_compilation): Do not kill saved tree.

	* opts.c (common_handle_option): Do not set max-inline-insns.
	* params.def: Update comments.
	(PARAM_MAX_INLINE_INSNS): Kill.
	* invoke.texi (max-inline-insns): Kill.

From-SVN: r73384
2003-11-09 02:37:54 +00:00
Jan Hubicka
1bb17c2144 re PR debug/12389 ([testcase needed] ICE in gen_subprogram_die for nested function)
PR debug/12389
	* Makefile.in (dwarf2out.o): Depend on cgraph.h.
	* cgraph.c (cgraph_function_possibly_inlined_p): New function.
	* cgraph.h (cgraph_function_possibly_inlined_p): Declare.
	(cgraph_global_info): Add flag inlined
	* dwarf2out.c (gen_subprogram_die, gen_decl_die): Use
	cgraph_function_possibly_inded_p
	* cgraphunit.c (mark_inline): Set inlined flag.
	* toplev.c (rest_of_decl_compilation): Call outlining_inline_function
	only for possibly inlined functions.
	* c-decl.c (duplicate_decls): Never output abstract DIE representing old
	body of function.

From-SVN: r72795
2003-10-22 11:58:10 +00:00
Jan Hubicka
d4d1ebc191 toplev.c (rest_of_compilation): Fix webizer pass ordering.
* toplev.c (rest_of_compilation): Fix webizer pass ordering.

	* cgraphunit.c (decide_is_function_needed):  Fix test dealing
	with functions implicitly made inline.

	* cgraphunit.c (cgraph_decide_inlining_incrementally):  New function.
	(cgraph_finalize_function): Use it.
	(cgraph_mark_inline): Allow incrmental decisions
	* invoke.texi (max-inline-slope, min-inline-insns): Kill.
	* params.def (PARAM_MAX_INLINE_SLOPE, PARAM_MIN_INLINE_INSNS): Kill.
	* tree-inline.c (limits_allow_inlining): Kill.
	(expand_call_inline): Always use unit-at-a-time path.

	* decl.c (start_cleanup_fn):  Set DECL_DECLARED_INLINE_P to deffer
	the expansion.

	* testsuite/g++.dg/opt/inline4.C: Do not use min-inline-insns
	parameter.
	* testsuite/gcc.dg/inline-2.c: Likewise.

From-SVN: r72721
2003-10-20 21:46:55 +00:00
Jan Hubicka
de006bbd18 cgraphunit.c (cgraph_decide_inlining): Fix uninitialized variable warning.
* cgraphunit.c (cgraph_decide_inlining): Fix uninitialized variable
	warning.

From-SVN: r72391
2003-10-12 09:06:26 +00:00
Kazu Hirata
2067c116a4 c-pretty-print.c: Fix comment typos.
* c-pretty-print.c: Fix comment typos.
	* c-pretty-print.h: Likewise.
	* calls.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov-io.h: Likewise.
	* gcse.c: Likewise.
	* genoutput.c: Likewise.
	* loop.c: Likewise.
	* postreload.c: Likewise.
	* reg-stack.c: Likewise.
	* regmove.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/mmix/mmix.c: Likewise.
	* config/mn10300/mn10300.md: Likewise.
	* config/sh/sh.h: Likewise.

From-SVN: r72118
2003-10-05 19:50:56 +00:00
Kelley Cook
7d82fe7cf8 cgraph.c (dump_cgraph): Don't output newline before dump.
2003-09-23  Kelley Cook  <kelleycook@wideopenwest.com>

	* cgraph.c (dump_cgraph):  Don't output newline before dump.  Add in
	"local" to the callgraph dump.  Output "after inlining" earlier.
	* cgraphunit.c: Fix dumpfile whitespace and commonize headers of the
	callgraph dumps.  Correct misspellings.
	(cgraph_decide_inlining):  Output number of insns before inlining.
	Output the calling function into which a function is inlined.
	(cgraph_decide_small_functions): Format dump file like always_inline.

From-SVN: r71804
2003-09-26 00:14:28 +00:00
Richard Sandiford
cb967da524 cgraph.h (cgraph_remove_edge): Declare.
* cgraph.h (cgraph_remove_edge): Declare.
	* cgraph.c (cgraph_remove_edge): Make extern.
	* cgraphunit.c (cgraph_finalize_function): Call cgraph_remove_edge
	instead of cgraph_remove_call.

From-SVN: r71784
2003-09-25 18:11:19 +00:00
Kelley Cook
a20af5b810 cgraphunit.c (cgraph_expand_all_functions): Renamed from cgraph_expand_functions.
2003-09-23  Kelley Cook  <kelleycook@wideopenwest.com>

	* cgraphunit.c (cgraph_expand_all_functions): Renamed from
	cgraph_expand_functions.

From-SVN: r71704
2003-09-24 00:05:42 +00:00
Richard Henderson
f6d1b84aa4 cgraphunit.c (cgraph_assemble_pending_functions): Export.
* cgraphunit.c (cgraph_assemble_pending_functions): Export.
        (cgraph_finalize_function): Revert TREE_ASM_WRITTEN check.
        * cgraph.h: Update.

        * decl2.c (finish_file): Check cgraph_assemble_pending_functions
        during relaxation loop.

From-SVN: r71360
2003-09-13 07:18:47 -07:00
Richard Henderson
6b00c969c4 cgraphunit.c (cgraph_finalize_function): Add nested arg.
* cgraphunit.c (cgraph_finalize_function): Add nested arg.
        Tweek tests for function already generated.
        (cgraph_expand_function): Don't double announce in !unit-at-a-time.
        * cgraph.h (cgraph_finalize_function): Update for extra arg.
        * c-decl.c (finish_function): Likewise.

        * semantics.c (expand_or_defer_fn): Update for new
        cgraph_finalize_function argument.

        * parse.y (source_end_java_method): Update for new
        cgraph_finalize_function argument.

From-SVN: r71298
2003-09-11 00:14:12 -07:00
Richard Henderson
25c84396dd cgraph.h (struct cgraph_node): Rename lowered to analyzed.
* cgraph.h (struct cgraph_node): Rename lowered to analyzed.
        * cgraphunit.c: Update to match.
        (record_call_1): Rearrange.  Call lang hook for language nodes.
        (cgraph_analyze_function): Don't call lower_function.
        * langhooks.h (struct lang_hooks_for_callgraph): Replace
        lower_function with analyze_expr.
        * langhooks-def.h: Update to match.
        * langhooks.c (lhd_callgraph_analyze_expr): New.

        * decl2.c (cxx_callgraph_analyze_expr): New, from corpse of
        mark_member_pointers.
        (lower_function): Remove.
        * cp-tree.h: Update to match.
        * cp-lang.c (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): New.
        (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Remove.

From-SVN: r71277
2003-09-10 12:16:20 -07:00
Richard Henderson
39adabaf32 cgraphunit.c (cgraph_finalize_function): Remove unused argument.
* cgraphunit.c (cgraph_finalize_function): Remove unused argument.
        * cgraph.h (cgraph_finalize_function): Update.
        * c-decl.c (finish_function): Update.
cp/
        * semantics.c (expand_or_defer_fn): Update call to
        cgraph_finalize_function.
java/
        * parse.y (source_end_java_method): Update call to
        cgraph_finalize_function.

From-SVN: r71263
2003-09-09 20:06:32 -07:00
Jan Hubicka
cd4dea6224 cgraphunit.c (cgraph_finalize_function): Fix handling of extern inline functions.
* cgraphunit.c (cgraph_finalize_function): Fix handling of extern
	inline functions.
	(cgraph_finalize_compilation_unit): Fix crash when dealing with lost
	DECL_SAVED_TREE.

From-SVN: r71245
2003-09-09 20:27:52 +00:00
Jan Hubicka
d853a20e6c cgraph.c (cgraph_varpool_finalize_decl): Sanity check duplicated finalization.
* cgraph.c (cgraph_varpool_finalize_decl): Sanity check duplicated
	finalization.
	* cgraphunit.c (decide_is_fnction_needed): Avoid special case of nested
	functions, check for COMDAT.
	(cgraph_assemble_pending_functions): Break out from...
	(cgraph_finalize_function): ... here; allow redefinig of extern inline
	functions.
	(record_call_1): Record function references only in non-unit-at-a-time
	mode.
	(cgraph_analyze_function): Reset current_function_decl.
	(cgraph_finalize_compilation_unit):  Assemble pending functions.

From-SVN: r71221
2003-09-09 00:31:39 +00:00
Richard Henderson
8dafba3ca4 cgraph.c (cgraph_mark_reachable_node): Split out from ...
* cgraph.c (cgraph_mark_reachable_node): Split out from ...
        (cgraph_mark_needed_node): Remove needed argument.
        * cgraph.h: Update to match.
        * cgraphunit.c (decide_is_function_needed): Split out from ...
        (cgraph_finalize_function): Reorg.  Avoid deferred_inline_function
        if we generated the function.
        (record_call_1): Update for cgraph_mark_reachable_node.
        * varasm.c (mark_referenced): Likewise.
        * objc/objc-act.c (mark_referenced_methods): Likewise.

        * decl2.c (mark_member_pointers_and_eh_handlers): Update for
        change in cgraph_mark_needed_node arguments.

From-SVN: r71104
2003-09-04 21:24:30 -07:00
Jeff Sturm
7dff32e660 cgraphunit.c (visited_nodes): New static variable.
* cgraphunit.c (visited_nodes): New static variable.
(record_call_1): Use walk_tree with visited_nodes.
(cgraph_create_edges): Use walk_tree with visited_nodes.
Setup/teardown visited_nodes hashtable.

From-SVN: r71033
2003-09-03 21:03:27 +00:00
Jan Hubicka
4a46cbfb11 Makefile.in (c-objc-common.o): Kill gt-c-objc-common.h dependency.
* Makefile.in (c-objc-common.o): Kill gt-c-objc-common.h dependency.
	* c-decl.c (finish_function):  Kill arguments, always use cgraph path.
	* c-objc-common.c: Kill include of gt-c-objc-common.h
	(expand_deferred_fns, deffer_fn): Kill function.
	(deferred_fns): Kill variable.
	(finish_cdtor): Update finish_function call.
	(c_objc_common_finish_file): Always call cgraph code.
	* c-parse.c: Regenerate.
	* c-parse.y: Regenerate.
	* c-tree.h (finish_function): Update prototype.

	* objc-acct.c (build_module_descriptor, finish_method_def):
	Update call of finish_function.

	* cgraphunit.c (cgraph_default_inline_p, cgraph_analyze_function): Add
	forward prototype.
	(cgraph_finalize_function): In non-unit-at-a-time mode analyze the
	function and assemble it if needed.
	(cgraph_finalize_compilation_unit): Do nothing in non-unit-at-a-time
	mode.
	(cgraph_optimize): Likewise.
	(cgraph_expand_function): In non-unit-at-a-time mode keep function body
	even when it has no inline callees.
	* c-parse.in: Update calls to finish_function.

From-SVN: r71028
2003-09-03 14:57:29 +00:00
Jeff Sturm
6438456842 cgraphunit.c (record_call_1): Use walk_tree_without_duplicates.
* cgraphunit.c (record_call_1): Use walk_tree_without_duplicates.
(cgraph_optimize_function): Set current_function_decl to the
fndecl we're integrating from.

From-SVN: r71002
2003-09-02 19:03:49 +00:00
Kazu Hirata
a98ebe2e37 builtins.c: Fix comment typos.
* builtins.c: Fix comment typos.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfgbuild.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloopanal.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcse.c: Likewise.
	* ggc-page.c: Likewise.
	* haifa-sched.c: Likewise.
	* pretty-print.c: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* value-prof.c: Likewise.

From-SVN: r70583
2003-08-19 23:22:00 +00:00
Jan Hubicka
e767b5be43 i386.c (ix86_fntype_regparm): Rename from ...
* i386.c (ix86_fntype_regparm): Rename from ...
	(ix86_function_regparm): ... this one; add fastcall and local
	functions.
	(ix86_function_ok_for_sibcall): Update.
	(ix86_return_pops_args): Likewise.
	(init_cumulative_args): Likewise.
	(x86_can_output_mi_thunk): Likewise.
	(function_arg): Fix formating.
	(x86_this_parameter): Fix fastcall.
	(x86_output_mi_thunk): Likewise.

	* cgraph.c (cgraph_mark_needed_node): Do not mark functions without
	body as reachable; mark nested functions as needed too.
	(dump_cgraph): Do not output global.calls.
	* cgraph.h (cgraph_global_info): Kill.
	* cgraphunit.c (cgraph_finalize_function): Enqueue needed functions.
	(record_call_1): Speedup.
	(cgraph_analyze_function): Break out from ...; compute inlining
	parameters.
	(cgraph_finalize_compilation_unit): ... here.
	(cgraph_mark_inline): Kill computation of calls.
	(cgraph_decide_inlining): Do not compute most of initial values.

From-SVN: r70504
2003-08-16 11:04:59 +00:00
Steven Bosscher
b3c3af2f63 tree.h (DID_INLINE_FUNC): Remove macro.
2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>

	* tree.h (DID_INLINE_FUNC): Remove macro.
	(DECL_DECLARED_INLINE_P): Move from c-tree.h and cp/cp-tree.h,
	add tree check for FUNCTION_DECL.
	(DECL_ESTIMATED_INSNS): Move from c-common.h and java/java-tree.h.
	(struct tree_decl): Rename inlined_function_flag to
	declared_inline_flag.
	* c-common.h (c_lang_decl): Remove.
	(DECL_ESTIMATED_INSNS): Remove.
	* c-tree.h (struct lang_decl): Don't include c_lang_decl.
	(DECL_DECLARED_INLINE_P): Remove.
	* c-decl.c (grokdeclarator): Update comment.  With -finline-functions,
	do not reset DECL_DECLARED_INLINE_P.  Don't use DID_INLINE_FUNC.
	(finish_function): Make uninlinable a bool.  Fixup call to
	tree_inlinable_function_p() and fix some code style issues.
	* cgraph.h (disgread_inline_limits): Fix spelling: `disregard'.
	* cgraph.c (dump_cgraph): Likewise.
	* cgraphunit.c (cgraph_decide_inlining): Likewise
	(cgraph_finalize_compilation_unit): Likewise.
	Also update call to tree_inlinable_function_p().
	(cgraph_default_inline_p): Don't use DID_INLINE_FUNC.  Instead
	look at DECL_DECLARED_INLINE and reverse logic.
	* print-tree.c (print_node): Likewise.
	* toplev.c (rest_of_handle_inlining): Don't use DID_INLINE_FUNC.
	* tree-inline.h (tree_inlinable_function_p): Make a bool.  Update
	prototype.
	* tree-inline.c (inlinable_function_p): Split up in this function to
	check for basic inlining inhibiting conditions, and new
	limits_allow_inlining() function.  Warn if inlining is impossible
	because the inline candidate calls alloca or uses sjlj exceptions.
	(limits_allow_inlining): this new function to check if the inlining
	limits are satisfied.  Throttle from currfn_max_inline_insns, not from
	MAX_INLINE_INSNS_SINGLE.  The latter only makes sense if
	MAX_INLINE_INSNS_AUTO and MAX_INLINE_INSNS_SINGLE are equal.
	Update prototypes.
	(tree_inlinable_function_p): Make a bool.  Update call to
	inlinable_function_p
	(expand_call_inline): Use limits_allow_inlining() when not in
	unit-at-a-time mode to decide on inlining.  Don't use DID_INLINE_FUNC,
	instead see if the function was declared `inline'.

cp/
	* cp-tree.h (struct lang_decl): Don't include c_lang_decl.
	(DECL_DECLARED_INLINE_P): Remove.
	* decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
	if decl is a FUNCTION_DECL.  This never made sense, but now it is
	required to avoid a tree check failure.
	* decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
	* optimize.c (maybe_clone_body): Likewise.

java/
	* java-tree.h (DECL_ESTIMATED_INSNS): Remove.

From-SVN: r70174
2003-08-05 14:11:53 +00:00
Jan Hubicka
b67d7f4aab * cgraphunit.c (cgraph_finalize_compilation_unit): Remove redundant if.
From-SVN: r69652
2003-07-21 22:46:47 +00:00
Andreas Jaeger
db0e878d33 * cgraphunit.c: Convert prototypes to ISO C90.
From-SVN: r69285
2003-07-13 10:40:07 +02:00
Jan Hubicka
1a5c570100 cgraphunit.c (cgraph_inlined_into, [...]): Fix warning.
* cgraphunit.c (cgraph_inlined_into, cgraph_inlined_calees): Fix
warning.

From-SVN: r69264
2003-07-12 04:10:36 +00:00
Jan Hubicka
b58b11577a cgraph.c (cgraph_max_uid): New global variable.
* cgraph.c (cgraph_max_uid): New global variable.
	(cgraph_node): Set uid field.
	(create_edge): Keep inline flags consistent.
	(dump_cgraph): Dump more info.
	* cgraph.h (struct cgraph_local_info): Remove inline_many and
	can_inline_once; add inlinable, disgread_inline_limits, and self_insn
	(struct cgraph_global_info): Add insns, calls, cloned_times,
	will_be_output.
	(struct cgraph_node): Add uid.
	(struct cgraph_edge): Add inline_call.
	(cgraph_max_uid, cgraph_inline_p): Declare.
	* cgraph.c: Include params.h and fibheap.h
	(cgraph_mark_functions_to_inline_once): Kill.
	(INSNS_PER_CALL): New constant.
	(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
	static variables.
	(cgraph_finalize_function): Do not analyze inlining.
	(cgraph_finalize_compilation_unit): Set inlining attributes.
	(cgraph_mark_functions_to_output): More consistency checks.
	(cgraph_optimize_function): Set current_function_decl to NULL.
	(cgraph_expand_function): Use new inline flags.
	(cgraph_postorder): Expand from cgraph_expand_functions.
	(INLINED_TIMES, SET_INLINED_TIMES): New macros.
	(cgraph_inlined_into, cgraph_inlined_callees,
	cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
	cgraph_mark_inline, cgraph_check_inline_limits,
	cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
	cgraph_decide_inlining, cgraph_inline_p): New functions.
	* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
	PARAM_INLINE_UNIT_GROWTH): New parameters.
	* tree-inline.c (struct inline_data): New field current_decl.
	(expand_call_inline): Avoid forward declarations; use
	inlinable_function_p.
	(optimize_inline_calls): Set id.current_decl.

Co-Authored-By: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>

From-SVN: r69262
2003-07-12 01:07:40 +00:00
Geoffrey Keating
d1bd0ded61 Index: ChangeLog
2003-07-10  Geoffrey Keating  <geoffk@apple.com>

	* c-decl.c (finish_decl): Handle 'used' here...
	* cgraphunit.c (cgraph_finalize_function): ... and here ...
	* c-common.c: (handle_used_attribute): ... not here.

	* configure.in (onstep): Support --enable-intermodule.
	* Makefile.in (OBJS-common): New.
	(OBJS-md): New.
	(OBJS-archive): New.
	(OBJS): Build from OBJS-common, OBJS-md, OBJS-archive.
	(OBJS-onestep): New.
	(libbackend.a): Support @onestep@.
	(libbackend.o): New.
	* configure: Regenerate.

	* c-common.h (c_reset_state): New prototype.
	(c_parse_file): New prototype.
	(finish_file): Move prototype from c-tree.h.
	* c-decl.c: Include <hashtab.h>.
	(builtin_decls): New.
	(current_file_decl): New.
	(duplicate_decls): Add extra parameter. Change all callers.  Don't
	output duplicate common symbols.
	(link_hash_hash): New.
	(link_hash_eq): New.
	(poplevel): Handle popping of the top level.
	(warn_if_shadowing): Handle TRANSLATION_UNIT_DECL.
	(pushdecl): Set DECL_CONTEXT to TRANSLATION_UNIT_DECL if appropriate.
	(pushdecl_top_level): Likewise.
	(redeclaration_error_message): Handle TRANSLATION_UNIT_DECL.
	(c_init_decl_processing): Create TRANSLATION_UNIT_DECL.
	(finish_decl): Handle TRANSLATION_UNIT_DECL.
	(merge_translation_unit_decls): New.
	(c_write_global_declarations): New.
	(c_reset_state): New.
	(implicitly_declare): Handle TRANSLATION_UNIT_DECL.
	* c-lang.c (LANG_HOOKS_WRITE_GLOBALS): New.
	* c-objc-common.c (c_cannot_inline_tree_fn): Handle
	TRANSLATION_UNIT_DECL.
	(c_objc_common_finish_file): Call merge_translation_unit_decls.
	* c-opts.c (in_fnames): Rename from in_fname.
	(c_common_decode_option): Handle multiple input filenames.
	(c_common_post_options): Likewise.
	(c_common_parse_file): Likewise; also, call c_parse_file rather than
	yyparse.
	* c-parse.in: Move cleanup code to c_parse_file.
	(free_parser_stacks): Move contents to c_parse_file.
	(c_parse_file): New.
	* c-tree.h (union lang_tree_node): Chain along TYPE_NEXT_VARIANT
	for integer types.
	(C_DECL_FILE_SCOPE): New.
	(finish_file): Move prototype to c-common.h.
	(merge_translation_unit_decls): New prototype.
	(comptypes): Add extra parameter to prototype.
	(c_write_global_declarations): New prototype.
	* c-typeck.c (tagged_types_tu_compatible_p): New.
	(function_types_compatible_p): Add extra parameter, change all callers.
	(type_lists_compatible_p): Likewise.
	(comptypes): Likewise.
	(struct tagged_tu_seen): New.
	(tagged_tu_seen_base): New.
	(build_unary_op): Handle TRANSLATION_UNIT_DECL.
	(c_mark_addressable): Remove #if 0 code.
	* calls.c (special_function_p): Handle TRANSLATION_UNIT_DECL, add
	comment explaining why it shouldn't have to.
	* cgraph.h (struct cgraph_node): Add chain_next and chain_prev GTY
	options.
	* cppinit.c (cpp_read_next_file): New.
	(cpp_read_main_file): Use it.
	* cpplib.c (undefine_macros): New.
	(cpp_undef_all): New.
	* cpplib.h (cpp_read_next_file): Prototype.
	(cpp_undef_all): Prototype.
	* langhooks-def.h (write_global_declarations): Remove prototype.
	* toplev.h (write_global_declarations): Add prototype.
	* tree.c (decl_type_context): Use switch statement, handle
	TRANSLATION_UNIT_DECL.
	* tree.def: Update documentation for TRANSLATION_UNIT_DECL.
	(TRANSLATION_UNIT_DECL): New kind of tree.
	* tree.h: Update documentation for TRANSLATION_UNIT_DECL.
	* Makefile.in (c-decl.o): Add $(HASHTAB_H) to dependencies.
	* doc/invoke.texi: Make attempt to document new functionality.

	2003-05-19  Per Bothner <bothner@apple.com>

	* gcc.c (combine_inputs): New.
	(process_command): Set combine_inputs.
	(do_spec_1): Handle combine_inputs.
	(main): Likewise.

Index: cp/ChangeLog
2003-07-10  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (cp_finish_decl): Handle 'used' attribute.

	* cp-lang.c (c_reset_state): New dummy routine.
	* cp-tree.h (finish_file): Move prototype to c-common.h.
	* parser.c (c_parse_file): Rename from yyparse; don't call finish_file.

From-SVN: r69224
2003-07-11 08:33:21 +00:00
Jan Hubicka
a194aa56e6 cgraph.c (cgraph_node_name): New function.
* cgraph.c (cgraph_node_name): New function.
	(dump_cgraph): Use it.
	* cgraph.h (cgraph_dump_file): Declare.
	(cgraph_node_name): Declare.
	* cgraphunit.c: Include timevar.h
	(cgraph_finalize_compilation_unit): Use timevar; reorganize dumps.
	(cgraph_optimize_function): Use TV_INTEGRATION.
	(cgraph_mark_local_functions): reorganize dumps.
	(cgraph_mark_functions_to_inline_once): Likewise.
	(cgraph_optimize): Likewise; use timevar.
	* timevar.def (TV_CGRAPH, TV_CGRAPHOPT): New.
	* toplev.c (dump_file_index): Add DFI_cgraph.
	(dump_file_info): Likewise.
	(cgraph_dump_file): New global variable.
	(do_compile): Open and close cgraph dump.
	* invoke.texi (-d): Document new flag; renumber.

From-SVN: r69120
2003-07-09 01:20:24 +00:00
Jan Hubicka
0184bd46b0 cgraphunit.c (cgraph_finalize_unit): Set current_function_decl before calling tree_inlinable_function_p.
* cgraphunit.c (cgraph_finalize_unit): Set current_function_decl
	before calling tree_inlinable_function_p.

From-SVN: r68819
2003-07-02 06:14:50 +00:00
Jan Hubicka
8bd87c4e73 cgraph.c (cgraph_mark_needed_node, [...]): Use next_needed field instead of aux to maintain the queue.
* cgraph.c (cgraph_mark_needed_node, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
	Use next_needed field instead of aux to maintain the queue.
	* cgraph.h (cgraph_node): Add next_needed.
	(cgraph_varpool_node): Add next_needed; remove aux.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Use next_needed.

From-SVN: r68807
2003-07-02 00:17:38 +00:00
Jan Hubicka
f6981e16c3 cgraphunit.c (cgraph_finalize_function): Set finalized.
* cgraphunit.c (cgraph_finalize_function): Set finalized.
	(cgraph_finalize_function): Do not examine inlinablility.
	(cgraph_finalize_compilation_unit): Do it here.
	* cgraph.h (cgraph_local_info): Add finalized field.

From-SVN: r68803
2003-07-02 00:14:44 +00:00
Kazu Hirata
e0bb17a83f basic-block.h: Fix comment typos.
* basic-block.h: Fix comment typos.
	* bb-reorder.c: Likewise.
	* c-format.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfghooks.h: Likewise.
	* cfgloop.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cfgrtl.c: Likewise.
	* cgraph.h: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* dbxout.c: Likewise.
	* df.c: Likewise.
	* df.h: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* et-forest.h: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.h: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* ra-build.c: Likewise.
	* ra-colorize.c: Likewise.
	* ra-rewrite.c: Likewise.
	* ra.h: Likewise.
	* regmove.c: Likewise.
	* reload.c: Likewise.
	* rtlanal.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-int.h: Likewise.
	* sched-vis.c: Likewise.
	* sreal.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa.c: Likewise.
	* toplev.c: Likewise.
	* tree-inline.c: Likewise.
	* value-prof.c: Likewise.
	* value-prof.h: Likewise.

From-SVN: r68770
2003-07-01 12:18:01 +00:00
Jan Hubicka
e69529cd53 Makefile.in (cgraph.o): Depend on output.h, not depend on tree-inline.h
* Makefile.in (cgraph.o): Depend on output.h, not depend on
	tree-inline.h
	* cgraph.c: Do not include tree-inline.h; include output.h
	(known_fns): Rename to ...
	(known_decls): ... this one; update all uses.
	(cgraph_varpool_hash): New static variable.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): New global
	variables.
	(cgraph_varpool_hash_node, eq_cgraph_varpool_node, cgraph_varpool_node,
	cgraph_varpool_node_for_identifier, cgraph_varpool_mark_needed_node,
	cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
	New functions.
	* cgraph.h (cgraph_varpool_node): New structure.
	(cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): Declare.
	(cgraph_varpool_node, cgraph_varpool_node_for_identifier,
	cgraph_varpool_finalize_decl, cgraph_varpool_mark_needed_node,
	cgraph_varpool_asemble_pending_decls): Declare.
	* cgraphunit.c (record_call_1): Notice variable references.
	(cgraph_finalize_compilation_unit): Assemble pending variables.
	* toplev.c (wrapup_global_declarations): Use varpool.
	(compile_file): Assemble pending declarations.
	(rest_of_decl_compilation): Use varpool in unit-at-a-time mode.
	* varasm.c (assemble_name): Notice varpool references.

From-SVN: r68426
2003-06-24 16:50:29 +00:00
Jan Hubicka
1668aabc22 cgraph.c (cgraph_nodes_queue): Declare.
* cgraph.c (cgraph_nodes_queue): Declare.
	(eq_node): Take identifier as p2.
	(cgraph_node): Update htab_find_slot_with_hash call.
	(cgraph_node_for_identifier): New.
	(cgraph_mark_needed_node): Move here from cgraphunit.c.
	* cgraph.h (cgraph_nodes_queue): Declare.
	(cgraph_node_for_identifier): Declare.
	* cgraphunit.c (cgraph_finalize_function): Collect entry points here
	instead of in cgraph_finalize_compilation_unit; constructors and
	destructors are entry points.
	(cgraph_finalize_compilation_unit): Reorganize debug outout;
	examine nested functions after lowerng; call collect_functions hook.
	(cgraph_mark_local_functions): DECL_COMDAT functions are not local.
	(cgraph_finalize_compilation_unit): Do not collect entry points.
	* varasm.c: Include cgraph.h
	(assemble_name): Mark referenced identifier as needed.

	* cgraphunit.c (record_call_1): Use get_callee_fndecl.

From-SVN: r68390
2003-06-23 21:11:44 +00:00
Steven Bosscher
7660e67ec6 cgraphunit.c (cgraph_create_edges): Drop walk_tree in favor of walk_tree_without_duplicates.
2003-05-10  Steven Bosscher  <steven@gcc.gnu.org>

	* cgraphunit.c (cgraph_create_edges): Drop walk_tree in
	favor of walk_tree_without_duplicates.  Add comments.

From-SVN: r66712
2003-05-12 09:46:25 +00:00
Roger Sayle
6a87d63407 c-cppbuiltin.c (builtin_define_with_value_n): Fix whitespace.
* c-cppbuiltin.c (builtin_define_with_value_n): Fix whitespace.
	* c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
	* cfgbuild.c (find_many_sub_basic_blocks): Likewise.
	(find_sub_basic_blocks): Likewise.
	* cgraphunit.c (cgraph_expand_functions): Likewise.
	* dwarf2out.c (prune_unused_types): Likewise.
	* expr.c (store_field): Likewise.
	* genextract.c (print_path): Likewise.
	* haifa-sched.c (schedule_insn): Likewise.
	* lcm.c (compute_antinout_edge): Likewise.
	* loop-unroll.c (decide_peel_once_rolling): Likewise.
	* ra-colorize.c (ra_colorize_free_all): Likewise.
	* ra-debug.c (dump_igraph): Likewise.
	(debug_hard_reg_set): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	* rtlanal.c (refers_to_regno_p): Likewise.
	* tracer.c (layout_superblocks): Likewise.

	* cp/tree.c (count_functions): Fix whitespace.

	* f/ste.c (ffeste_R810): Fix whitespace.

From-SVN: r64402
2003-03-15 13:43:33 +00:00
Jan Hubicka
18d13f3417 inline-3.c: New test.
* gcc.dg/inline-3.c: New test.

	* c-decl.c: (finish_function): Update call of tree_inlinable_function_p.
	* cgraph.h: (cgraph_local_info): Add can_inline_once
	(cgraph_global_info): Add inline_once.
	(cgraph_node): Add previous.
	(cgraph_remove_node): New.
	* cgraphunit.c (cgraph_mark_functions_to_inline_once): New static
	function.
	(cgraph_optimize): Call it.
	(cgraph_finalize_function):  Set inlinable flags.
	(cgraph_finalize_compilation_unit):  Actually remove the reclaimed nodes.
	(cgraph_mark_functions_to_output):  Use new inlining heuristics flags.
	(cgraph_expand_function): Likewise.
	* cgraph.c
	(cgraph_node): Put nodes into doubly linked chain.
	(cgraph_remove_node): New function.
	* flags.h (flag_inline_functions_called_once): Declare.
	* tree-inline.c: Include cgraph.h
	(inlinable_functions_p): Add extra argument to bypass limits.
	(expand_call_inline):  Obey cgraph flag.
	* tree-inline.h (tree_inlinable_function_p): Update prototype.

From-SVN: r63983
2003-03-08 13:26:37 +00:00
Jan Hubicka
dafc5b82d5 i386-local.c: New.
* gcc.dg/i386-local.c: New.

	* toplev.c (rest_of_compilation):  Deffer RTL compilation only when
	RTL inlining is done.

	* cgraphunit.c (cgraph_mark_local_functions): New local function.
	(cgraph_optimize): Mark local functions.
	* i386-protos.h (init_cumulative_args): Update prototype.
	* i386.c (init_cumulative_args): Use register passing convention for
	local functions.

	* cgraph.c (cgraph_global_info_ready): New global variable
	(cgraph_local_info, cgraph_global_info): New functions.
	* cgraph.h (struct cgraph_local_info, cgraph_global_info): New
	structures.
	(cgraph_local_info, cgraph_global_info, cgraph_global_info_ready):
	Declare.
	* cgraphunit.c (cgraph_finalize_function): Set inline_many.
	(cgraph_mark_functions_to_output): Use inline_many.
	(cgraph_expand_function): Free DECL_SAVED_TREE uncondtionally.
	(cgraph_expand_functions): Expand inline functions last.
	(cgraph_optimize): Do not emit uneeded functions.

From-SVN: r63822
2003-03-05 01:33:27 +00:00
Jan Hubicka
1c4a429ab0 expmed.c (expand_divmod): Undo sign extensions for unsigned operands
* expmed.c (expand_divmod): Undo sign extensions for unsigned operands

	* cfgcleanup.c (try_forward_edges):  Don't check loop structures
	when not optimizing.
	(cleanup_cfg): Do not iterate trought delete_trivially_dead_insns
	when not expensive.
	* toplev.c (rest_of_compilation):  Duplicate loop headers only when
	optimizing;  Delete trivially dead insns early; fix optimize check.

	* Makefile.in (c-decl.o, c-objc-common.o, cgraph.o, tree-inline.o): Add
	dependency on cgraph.h
	* c-decl.c: Include cgraph.h
	(finish_function): Update call of tree_inlinable_function_p.
	* c-objc-common.c: Include cgraph.h
	* cgraph.h: New file.
	* cgraphunit.c: New file.
	* cgraph.c (cgraph_node, cgraph_edge): Move into cgraph.h
	(cgraph_nodes, cgraph_n_nodes): Globalize.
	(cgraph_finalize_function, cgraph_finalize_compilation_unit
	cgraph_create_edges, cgraph_optimize, cgraph_mark_needed_node):
	Move into cgraphunit.c
	* tree-inline.c: Include cgraph.h
	* tree-inline.c: Include cgraph.h

From-SVN: r63281
2003-02-22 10:02:31 +00:00