Jan Hubicka
c5a4444c50
cgraph.c (cgraph_clone_edge): New UPDATE_ORIGINAL argument.
...
* cgraph.c (cgraph_clone_edge): New UPDATE_ORIGINAL argument.
(cgraph_clone_node): Likewise.
* cgraph.h (cgraph_clone_edge): Update prototype.
(cgraph_clone_node): Likewise.
* ipa-inline.c (cgraph_clone_inlined_nodes): Update call of
cgraph_clone_node.
(lookup_recursive_calls): Consider profile.
(cgraph_decide_recursive_inlining): Fix updating; use new
probability argument; use profile.
* params.def (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY): New.
* tree-inline.c (copy_bb): Update clal of clone_edge.
* tree-optimize.c (tree_rest_of_compilation): UPdate cal of clone_node.
* invoke.texi (min-inline-recursive-probability): Document.
From-SVN: r102521
2005-07-28 21:45:27 +00:00
Jan Hubicka
093c232927
re PR tree-optimization/22574 (ICE with IMA and optimization and extern inline)
...
PR tree-optimization/22574
* cgraph.c (cgraph_function_body_availability): Unanalyzed bodies are
not available.
From-SVN: r102423
2005-07-27 10:50:59 +00:00
Paolo Bonzini
ef3303124e
Makefile.in: Adjust dependencies.
...
2005-07-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in: Adjust dependencies.
* tree-pass.h: Add new passes and passes formerly in tree-optimize.c.
* basic-block.h (duplicate_computed_gotos): Remove, it is now static.
* alias.c (rest_of_handle_cfg, pass_cfg): New.
* bb-reorder.c (duplicate_computed_gotos): Make it static.
* cfgexpand.c (tree_expand_cfg): Add code formerly at the beginning of
rest_of_compilation.
* bb-reorder.c (gate_duplicate_computed_gotos,
pass_duplicate_computed_gotos, gate_handle_reorder_blocks,
rest_of_handle_reorder_blocks, pass_reorder_blocks,
gate_handle_partition_blocks, rest_of_handle_partition_blocks,
pass_partition_blocks): New.
* bt-load.c (gate_handle_branch_target_load_optimize,
rest_of_handle_branch_target_load_optimize,
pass_branch_target_load_optimize): New.
* cfgcleanup.c (rest_of_handle_jump, pass_jump, rest_of_handle_jump2,
pass_jump2): New.
* cfglayout.c (pass_insn_locators_initialize): New.
* cfgrtl.c (pass_free_cfg): New.
* combine.c (gate_handle_combine, rest_of_handle_combine,
pass_combine): New.
* cse.c (gate_handle_cse, rest_of_handle_cse, pass_cse,
gate_handle_cse2, rest_of_handle_cse2, pass_cse2): New.
* emit-rtl.c (pass_unshare_all_rtl, pass_remove_unnecessary_notes): New.
* except.c (pass_set_nothrow_function_flags,
pass_convert_to_eh_region_ranges, gate_handle_eh, rest_of_handle_eh,
pass_rtl_eh): New.
* final.c (pass_compute_alignments, rest_of_handle_final, pass_final,
rest_of_handle_shorten_branches, pass_shorten_branches,
rest_of_clean_state, pass_clean_state): New.
* flow.c (pass_recompute_reg_usage, gate_remove_death_notes,
rest_of_handle_remove_death_notes, pass_remove_death_notes,
rest_of_handle_life, pass_life, rest_of_handle_flow2,
pass_flow2): New.
* function.c (pass_instantiate_virtual_regs, pass_init_function,
rest_of_handle_check_leaf_regs, pass_leaf_regs): New.
* gcse.c (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
pass_jump_bypass, gate_handle_gcse, rest_of_handle_gcse,
pass_gcse): New.
* global.c (rest_of_handle_global_alloc, pass_global_alloc): New.
* ifcvt.c (gate_handle_if_conversion, rest_of_handle_if_conversion,
pass_rtl_ifcvt, gate_handle_if_after_combine,
rest_of_handle_if_after_combine, pass_if_after_combine,
gate_handle_if_after_reload, rest_of_handle_if_after_reload,
pass_if_after_reload): New.
* integrate.c (pass_initial_value_sets): New.
* jump.c (pass_cleanup_barriers, purge_line_number_notes,
pass_purge_lineno_notes): New.
* mode-switching.c (rest_of_handle_mode_switching,
pass_mode_switching): New.
* local-alloc.c (rest_of_handle_local_alloc, pass_local_alloc): New.
* loop-init.c (gate_handle_loop2, rest_of_handle_loop2,
pass_loop2): New.
* loop.c (gate_handle_loop_optimize, rest_of_handle_loop_optimize,
pass_loop_optimize): New.
* modulo-sched.c (gate_handle_sms, rest_of_handle_sms,
pass_sms): New.
* postreload-gcse.c (gate_handle_gcse2, rest_of_handle_gcse2,
pass_gcse2): New.
* postreload.c (gate_handle_postreload, rest_of_handle_postreload,
pass_postreload_cse): New.
* profile.c (gate_handle_profiling, pass_profiling,
rest_of_handle_branch_prob, pass_branch_prob): New.
* recog.c (pass pass_split_for_shorten_branches, gate_do_final_split,
pass_split_before_regstack, gate_handle_split_before_regstack,
gate_handle_peephole2, rest_of_handle_peephole2, pass_peephole2,
rest_of_handle_split_all_insns, pass_split_all_insns): New.
* reg-stack.c (gate_handle_stack_regs, rest_of_handle_stack_regs,
pass_stack_regs): New.
* regmove.c (gate_handle_regmove, rest_of_handle_regmove, pass_regmove,
gate_handle_stack_adjustments, rest_of_handle_stack_adjustments,
pass_stack_adjustments): New.
* regrename.c (gate_handle_regrename, rest_of_handle_regrename,
pass_regrename): New.
* reorg.c (gate_handle_delay_slots, rest_of_handle_delay_slots,
pass_delay_slots, gate_handle_machine_reorg,
rest_of_handle_machine_reorg, pass_machine_reorg): New.
* rtl.h (extern void purge_line_number_notes): New.
* sched-rgn.c (gate_handle_sched, rest_of_handle_sched,
gate_handle_sched2, rest_of_handle_sched2, pass_sched,
pass_sched2): New.
* tracer.c (gate_handle_tracer, rest_of_handle_tracer,
pass_tracer): New.
* value-prof.c (gate_handle_value_profile_transformations,
rest_of_handle_value_profile_transformations,
pass_value_profile_transformations): New.
* var-tracking.c (gate_handle_var_tracking,
pass_variable_tracking): New.
* web.c (gate_handle_web, rest_of_handle_web, pass_web): New.
* passes.c (open_dump_file, close_dump_file, rest_of_handle_final,
rest_of_handle_delay_slots, rest_of_handle_stack_regs,
rest_of_handle_variable_tracking, rest_of_handle_machine_reorg,
rest_of_handle_old_regalloc, rest_of_handle_regrename,
rest_of_handle_reorder_blocks, rest_of_handle_partition_blocks,
rest_of_handle_sms, rest_of_handle_sched, rest_of_handle_sched2,
rest_of_handle_gcse2, rest_of_handle_regmove,
rest_of_handle_tracer, rest_of_handle_if_conversion,
rest_of_handle_if_after_combine, rest_of_handle_if_after_reload,
rest_of_handle_web, rest_of_handle_branch_prob,
rest_of_handle_value_profile_transformations, rest_of_handle_cfg,
rest_of_handle_jump_bypass, rest_of_handle_combine,
rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
rest_of_handle_gcse, rest_of_handle_loop_optimize,
rest_of_handle_loop2, rest_of_handle_branch_target_load_optimize,
rest_of_handle_mode_switching, rest_of_handle_jump,
rest_of_handle_eh, rest_of_handle_stack_adjustments,
rest_of_handle_flow2, rest_of_handle_jump2,
rest_of_handle_peephole2, rest_of_handle_postreload,
rest_of_handle_shorten_branches, rest_of_clean_state,
rest_of_compilation): Remove.
* cgraphunit.c (ipa_passes): Moved from tree-optimize.c.
* passes.c (dump_flags, in_gimple_form, all_passes,
all_ipa_passes, all_lowering_passes, register_one_dump_file,
register_dump_files, next_pass_1, last_verified, execute_todo,
execute_one_pass, execute_pass_list, execute_ipa_pass_list): Moved
from tree-optimize.c.
(init_optimization_passes): Moved from tree-optimize.c,
adding the RTL optimizations.
* tree-dump.h (dump_info_p, dump_flag): Moved from tree.h.
* tree-optimize.c (dump_flags, in_gimple_form, all_passes,
all_ipa_passes, all_lowering_passes, register_one_dump_file,
register_dump_files, next_pass_1, last_verified, execute_todo,
execute_one_pass, execute_pass_list, execute_ipa_pass_list,
init_tree_optimization_passes, ipa_passes): Delete.
* tree-pass.h (enum tree_dump_index): Moved from tree.h, removing
the RTL dumps.
(TDF_*, get_dump_file_name, dump_enabled_p, dump_initialized_p,
dump_begin, dump_end, dump_node, dump_switch_p, dump_flag_name): Moved
from tree.h.
(ipa_passes): Remove.
(all_passes, all_ipa_passes, all_lowering_passes): Now extern.
* tree.h (enum tree_dump_index, TDF_*, get_dump_file_name,
dump_enabled_p, dump_initialized_p, dump_begin, dump_end, dump_node,
dump_switch_p, dump_flag_name): Moved to tree-pass.h.
(dump_info_p, dump_flag): Moved to tree-dump.h.
* Makefile.in: Adjust dependencies for tree-pretty-print.c,
cgraph.c, opts.c.
* passes.c (finish_optimization_passes): Use dump_begin
and dump_end, TDI_end.
(gate_rest_of_compilation): New.
(pass_rest_of_compilation): Use it.
(gate_postreload, pass_postreload): New.
* toplev.c (general_init): Rename init_tree_optimization_passes.
* toplev.h (init_tree_optimization_passes): Rename to
init_optimizations_passes.
* tree-dump.c (dump_flag): Make static.
(dump_files): Remove RTL dumps.
* tree-optimize.c (pass_all_optimizations, pass_early_local_passes,
pass_cleanup_cfg, pass_free_cfg_annotations,
pass_cleanup_cfg_post_optimizing, pass_free_datastructures,
pass_init_datastructures, pass_fixup_cfg): Make non-static.
* tree-pretty-print.c: Include tree-pass.h.
* cgraph.c: Include tree-dump.h.
cp:
2005-07-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (class.o, decl2.o): Adjust dependencies.
* class.c: Include tree-dump.h.
* decl2.c: Include tree-dump.h.
java:
2005-07-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (parse.o): Adjust dependencies.
* parse.y: Include tree-dump.h.
From-SVN: r101627
2005-07-05 16:20:53 +00:00
Jan Hubicka
d63db217ae
cgraph.c (cgraph_remove_node): Do not release function bodies until full cgraph is built.
...
* cgraph.c (cgraph_remove_node): Do not release function bodies until
full cgraph is built.
* cgraph.h (cgraph_decide_inlining_incrementally): Add early argument.
* cgraphunit.c (cgraph_finalize_function): Update call of
cgraph_decide_inlining_incrementally.
(initialize_inline_failed): Break out of ...
(cgraph_analyze_function): ... here.
(rebuild_cgraph_edges): New function.
(pass_rebuild_cgraph_edges): New pass.
* common.opt (fearly-inlining): New flag.
* ipa-inline.c: Include ggc.h
(cgraph_clone_inlined_nodes): Avoid re-using of original copy
when cgraph is not fully built.
(cgraph_decide_inlining_incrementally): Add early mode.
(cgraph_early_inlining): New function.
(cgraph_gate_early_inlining): Likewise.
(pass_early_ipa_inline): New pass.
* ipa.c (cgraph_postorder): NULLify aux pointer.
* tree-inline.c (expand_call_inline): Avoid warning early.
* tree-optimize.c (pass_early_local_passes): New.
(execute_cleanup_cfg_pre_ipa): New.
(pass_cleanup_cfg): New.
(register_dump_files): Fix handling subpasses of IPA pass.
(init_tree_optimization_passes): Add early passes.
(execute_ipa_pass_list): Fix handling of subpasses of IPA pass.
* passes.h (pass_early_tree_profile, pass_rebuild_cgraph_edges,
pass_early_ipa_inline): New passes.
* tree-profile.c (do_early_tree_profiling, pass_early_tree_profile): New.
* invoke.texi: Document early-inlining.
From-SVN: r101369
2005-06-28 02:20:29 +00:00
Kelley Cook
366ccddb2b
Update FSF address.
...
From-SVN: r101317
2005-06-25 02:02:01 +00:00
Jan Hubicka
ce91e74c18
tree-optimize.c (init_tree_optimization_passes): Fix flags of all_passes and all_ipa_passes.
...
* tree-optimize.c (init_tree_optimization_passes): Fix flags of
all_passes and all_ipa_passes.
* c-common.c: Include cgraph.h
(handle_externally_visible_attribute): New function.
(c_common_att): Add "externally_visible" attribute.
* cgraph.c (decide_is_variable_needed): Obey externally
visible flag.
(cgraph_varpool_finalize_decl): Avoid redundant checking.
* cgraph.h (struct cgraph_node): New flag externally_visible.
(decide_is_function_needed): Obey externally visible flag.
(cgraph_finalize_function): Avoid redundant checks.
(cgraph_function_and_variable_visibility): Bring symbols local
when asked for.
* common.opt (fwhole-program): New flag.
* doc/invoke.texi (-fwhole-program): Document.
From-SVN: r101295
2005-06-24 15:14:04 +00:00
Kazu Hirata
ff5c4582e0
cgraph.c, [...]: Fix comment typos.
...
* cgraph.c, cgraphunit.c, config/mips/mips.c: Fix comment
typos.
From-SVN: r100538
2005-06-03 13:41:39 +00:00
Jan Hubicka
6b02a4997b
cgraph.c (cgraph_node): Maintain master clones.
...
* cgraph.c (cgraph_node): Maintain master clones.
(cgraph_remove_node): Likewise.
(availability_names): New static variable.
(dump_cgraph_node): Dump availability.
(dump_cgraph_varpool_node): Likewise.
(cgraph_is_master_clone, cgraph_master_clone,
cgraph_function_body_availability,
cgraph_variable_initializer_availability): New functions.
* cgraph.h (availability): New enum.
(struct cgraph_node): Add master_clone.
(cgraph_is_master_clone, cgraph_master_clone,
cgraph_function_body_availability,
cgraph_variable_initializer_availability): Declare.
* cgraphunit.c (cgraph_expand_function): Setcgraph_function_flags_ready.
(cgraph_remove_unreachable_nodes): Remove unreachable nodes.
* ipa-inline.c (cgraph_decide_inlining): Do not call
cgraph_remove_unreachable_nodes.
From-SVN: r100507
2005-06-02 19:41:31 +00:00
Jan Hubicka
e7d6beb0f8
cgraph.c (dump_cgraph_node): Print new flags.
...
* cgraph.c (dump_cgraph_node): Print new flags.
(dump_cgraph_varpool_node): Likewise.
(decide_variable_is_needed): Initialize externally_visible flag.
* cgraph.h (cgraph_local_info): Add externally_visible flag.
(cgraph_varpool_node): Likewise.
(cgraph_function_flags_ready): Declare.
* cgraph.c (cgraph_mark_local_functions): Rename to ...
(cgraph_function_and_variable_visibility) ... this one; handle
externally_visible flags.
(decide_is_function_needed): Set externally_visible flag.
(cgraph_finalize_function): Deal properly with early cleanups.
(cgraph_optimize): Update call of
cgraph_function_and_variable_visibility.
From-SVN: r100491
2005-06-02 10:59:00 +00:00
Jan Hubicka
e0704a46ca
cgraph.c: Include tree-gimple.h
...
* cgraph.c: Include tree-gimple.h
(cgraph_edge): Rename expr to stmt.
(cgraph_create_edge): Likewise.
(cgraph_clone_node): Likewise.
* cgraph.h (cgraph_node): Use call_stmt instead of call_expr.
* cgraphunit.c (record_call_1): Rename to ...
(record_reference): ... this one; do not build edges.
(cgraph_varpool_analyze_pending_decls): Call record_reference directly.
(current_basic_block): Kill.
(cgraph_create_edges): Rewrite to work on gimple statements nicely.
(verify_cgraph_node): Likewise.
* tree-inline.c (copy_body_r): Do not mess up with cgraph edges.
(copy_bb): Mess up with cgraph edges here; simplify EH handling.
(copy_edges_for_bb): Simplify EH handling.
(expand_call_inline): Pass statement to cgraph_edge and
cgraph_create_edge.
From-SVN: r100276
2005-05-27 21:17:51 +00:00
Jan Hubicka
670cd5c514
Makefile.in (ipa-inline.o): Add COEVERAGE_H dependency.
...
* Makefile.in (ipa-inline.o): Add COEVERAGE_H dependency.
* cgraph.c (cgraph_create_node): Reset estimated_growth.
* cgraph.h (cgraph_global_info): Add estimated_growth.
* ipa-inline.c: Include coverage.h
(max_insns, max_count): New static variables.
(cgraph_estimate_size_after_inlining): Cache the result.
(cgraph_estimate_growth):
* passes.c (rest_of_clean_state): Kill coverage_end_function.
* timevar.def (TV_INLINE_HEURISTICS): New timevar.
* tree-optimize.c (init_tree_optimization_passes): Move profiling before
inlining.
(ipa_passes): Initialize bitmaps.
* gcc.dg/tree-prof/inliner-1.c: New.
2005-05-25 Janis Johnson <janis187@us.ibm.com>
* gcc.dg/tree-prof: New directory.
* gcc.dg/tree-prof/tree-prof.exp: New.
From-SVN: r100144
2005-05-25 12:34:01 +00:00
Jan Hubicka
e42922b1ae
basic-block.h (REG_BR_PROB_BASE): Define.
...
* basic-block.h (REG_BR_PROB_BASE): Define.
* cgraph.c (cgraph_create_edge): Initialize loop_nest and count.
(dump_cgraph_node): Dump count.
(cgraph_clone_edge): Rescale counts.
(cgraph_clone_node): Likewise.
* cgraph.h: Include basic-block.h
(cgraph_node): Add count.
(cgraph_edge): Add count and loop_nest.
(cgraph_node, cgraph_edge, cgraph_clone_edge, cgraph_clone_node):
Update prototypes.
* cgraphunit.c: Kill now redundant inlining comment.
(cgraph_create_edges): Make static, maintain current basic block;
fix pasto.
(record_call_1): Fill in new fields.
* ipa-inline.c (cgraph_clone_inlined_nodes): Update call of
cgraph_clone_node.
(cgraph_decide_recursive_inlining): Likewise.
* rtl.h (REG_BR_PROB_BASE): Kill.
* tree-inline.c (copy_body_r): Update call of cgraph_clone_edge.
(expand_call_inline): Update call of cgraph_create_edge.
* tree-optimize.c (tree_rest_of_compilation): Likewise.
From-SVN: r99976
2005-05-19 10:38:42 +00:00
DJ Delorie
d4ee4d2525
diagnostic.c (warning): Accept parameter to classify warning option.
...
* diagnostic.c (warning): Accept parameter to classify warning option.
(warning0): New, for when a pointer to an error() like function is needed.
* errors.c (warning): Likewise.
* errors.h (warning, warning0): Adjust prototypes.
* toplev.h (warning, warning0): Likewise.
* attribs.c, builtins.c, c-common.c, c-decl.c, c-format.c,
c-gimplify.c, c-lex.c, c-objc-common.c, c-opts.c, c-parser.c,
c-pragma.c, c-typeck.c, calls.c, cgraph.c, coverage.c, emit-rtl.c,
fold-const.c, fortran/trans-decl.c, function.c, gcse.c,
genautomata.c, haifa-sched.c, opts.c, passes.c, regclass.c,
reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
tree-dump.c, tree-inline.c, tree-mudflap.c, tree-optimize.c,
tree-ssa.c, tree.c, varasm.c: Adjust warning() callers.
* config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
config/avr/avr.c, config/bfin/bfin.c, config/c4x/c4x-c.c,
config/c4x/c4x.c, config/cris/cris.c, config/darwin-c.c,
config/darwin.c, config/darwin.h, config/h8300/h8300.c,
config/i386/cygming.h, config/i386/djgpp.h, config/i386/i386.c,
config/i386/winnt.c, config/ia64/ia64-c.c, config/ia64/ia64.c,
config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
config/m68k/m68k.c, config/mcore/mcore.c, config/mips/mips.c,
config/mmix/mmix.c, config/ns32k/ns32k.c, config/pa/pa-hpux11.h,
config/pa/pa.c, config/rs6000/aix43.h, config/rs6000/aix51.h,
config/rs6000/aix52.h, config/rs6000/darwin.h,
config/rs6000/rs6000-c.c, config/rs6000/rs6000.c,
config/s390/s390.c, config/sh/sh.c, config/sh/sh.h,
config/sh/symbian.c, config/sol2-c.c, config/sol2.c,
config/stormy16/stormy16.c, config/v850/v850-c.c,
config/v850/v850.c, config/xtensa/xtensa.c: Adjust warning()
callers.
* ada/misc.c: Adjust warning() callers.
* cp/call.c, cp/class.c, cp/cvt.c, cp/decl.c, cp/decl2.c,
cp/except.c, cp/friend.c, cp/init.c, cp/lex.c, cp/mangle.c,
cp/method.c, cp/name-lookup.c, cp/parser.c, cp/repo.c, cp/rtti.c,
cp/tree.c, cp/typeck.c, cp/typeck2.c: Adjust warning() callers.
* fortran/trans-decl.c: Adjust warning() callers.
* java/class.c, java/decl.c, java/expr.c, java/jcf-io.c,
java/jcf-parse.c, java/jv-scan.c, java/parse.y: Adjust warning()
callers.
* objc/objc-act.c: Adjust warning() callers.
* treelang/parse.y: Adjust warning() callers.
From-SVN: r98633
2005-04-23 17:29:07 -04:00
Jan Hubicka
cd9c7bd28b
[multiple changes]
...
2005-03-31 Jan Hubicka <jh@suse.cz>
2004-11-02 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_varpool_node_name): New function.
(dump_cgraph_varpool_node): New function.
(dump_varpool): New function.
* cgraphunit.c (cgraph_optimize): Dump varpool.
2004-10-16 Jan Hubicka <jh@suse.cz>
* cgraph.c (decide_is_variable_needed): New function.
(cgraph_varpool_finalize_decl): Use it.
* cgraphunit.c (cgraph_optimize): Assemble_pending_decls when not doing
unit-at-a-time.
* final.c (output_addr_const): Do not call mark_referenced.
* passes.c (rest_of_decl_compilation): ifdef out DECL_RTL_SET_P hack;
always go via cgraph.
* toplev.c (wrapup_global_declarations): Kill non-unit-at-a-time code.
(check_global_declarations): Ifdef out code clearing DECL_RTL.
* tree-optimize.c (execute_inline): Mark functions called.
* i386.c (output_pic_addr_const): Do not call mark_decl_referenced.
2004-10-11 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_varpool_first_unanalyzed_node): New global voriable
(cgraph_varpool_last_needed_node): New static variable.
(enqueue_needed_varpool_node): Break out from ...; add items to the
end of queue; update first pointers.
(cgraph_varpool_mark_needed_node): ... here.
(cgraph_varpool_finalize_decl): Use enqueue_needed_varpool_node.
(cgraph_varpool_assemble_pending_decls): Move to cgraphunit.c
* cgraph.h (cgraph_varpool_node): Add analyzed field.
(cgraph_varpool_first_unanalyzed_node): Declare.
* cgraphunit.c: Include output.h.
(cgraph_varpool_analyze_pending_decls): New function.
(cgraph_varpool_assemble_pending_decls): Move from cgraph.c; bail out
for errors, analyze pending decls.
(cgraph_finalize_compilation_unit): Only analyze decls.
(cgraph_optimize): Assemble the decls after expanding.
From-SVN: r97287
2005-03-30 22:28:02 +00:00
Jakub Jelinek
1a612e0a6c
re PR middle-end/20622 (Alias to nocommon variable fails to assemble on ppc64)
...
PR middle-end/20622
* cgraph.h (struct cgraph_varpool_node): Add alias field.
* cgraph.c (cgraph_varpool_assemble_pending_decls): Don't call
assemble_variable on aliases.
* varasm.c (assemble_alias): Set node->alias.
* toplev.c (wrapup_global_declarations): Don't call
rest_of_decl_compilation on aliases again.
* gcc.dg/alias-7.c: New test.
From-SVN: r97161
2005-03-29 17:37:29 +02:00
Jan Hubicka
1655dc9de3
cgraph.h (cgraph_node): Add prev_clone pointer.
...
* cgraph.h (cgraph_node): Add prev_clone pointer.
* cgraph.c (cgraph_remove_node): Remove from doubly linked chain.
(cgraph_clone_node): Produce doubly linked chain.
From-SVN: r96761
2005-03-20 15:27:18 +00:00
Jan Hubicka
45676d2b6c
re PR middle-end/20225 (ICE during GC)
...
PR middle-end/20225
* cgraph.c (cgraph_mark_reachable_node): Assert that it is not called
too late.
* varasm.c (find_decl_and_mark_needed): Mark needed only when not
called too late.
From-SVN: r96685
2005-03-18 14:57:10 +00:00
Jan Hubicka
4a76d91a23
cgraph.c (cgraph_remove_node): Avoid loop in code deciding whether function body should be released...
...
* cgraph.c (cgraph_remove_node): Avoid loop in code deciding whether
function body should be released; do not proactively release function
bodies in non-unit-at-a-time mode.
From-SVN: r96654
2005-03-18 10:00:53 +00:00
Richard Guenther
2563c2248f
cgraph.h (struct cgraph_edge): Add prev_caller and prev_callee fields.
...
2005-03-02 Richard Guenther <rguenth@gcc.gnu.org>
* cgraph.h (struct cgraph_edge): Add prev_caller and
prev_callee fields.
(cgraph_node_remove_callees): Export.
* cgraph.c (cgraph_create_edge): Initialize prev_caller
and prev_callee.
(cgraph_edge_remove_callee): New function.
(cgraph_edge_remove_caller): Likewise.
(cgraph_remove_edge): Use.
(cgraph_redirect_edge_callee): Likewise.
(cgraph_node_remove_callees): New function.
(cgraph_node_remove_callers): Likewise.
(cgraph_remove_node): Use.
* tree-optimize.c (tree_rest_of_compilation): Use
cgraph_node_remove_callees instead of manual loop.
* cgraphunit.c (cgraph_finalize_function): Likewise.
(cgraph_expand_function): Likewise.
(cgraph_remove_unreachable_nodes): Likewise.
From-SVN: r95777
2005-03-02 11:09:48 +00:00
Kazu Hirata
15f0d971d1
cgraph.c (cgraph_varpool_n_nodes): Remove.
...
* cgraph.c (cgraph_varpool_n_nodes): Remove.
(cgraph_varpool_node): Don't access cgraph_varpool_n_nodes.
* cgraph.h: Remove the corresponding declaration.
From-SVN: r94121
2005-01-23 19:17:09 +00:00
Kazu Hirata
ad616de14c
basic-block.h, [...]: Update copyright.
...
* basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c,
c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c,
combine.c, config.gcc, coverage.h, cse.c, cselib.c,
defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c,
flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c,
gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h,
output.h, postreload-gcse.c, postreload.c, recog.c,
resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c,
targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c,
tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c,
tree-optimize.c, tree-outof-ssa.c, tree-pass.h,
tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c,
tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c,
tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def,
unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright.
From-SVN: r93827
2005-01-18 11:36:31 +00:00
Richard Henderson
bedb9fc04b
re PR c/19031 (#pragma weak handling changes in 4.0.0)
...
PR c/19031
* c-decl.c (pop_file_scope): Call maybe_apply_pending_pragma_weaks.
* c-lang.c (finish_file): Don't do it here.
* objc/objc-act.c (objc_finish_file): Likewise.
* cgraph.c (decl_assembler_name_equal): New.
(cgraph_node_for_asm, cgraph_varpool_node_for_asm): New.
(cgraph_varpool_node): Actually link up cgraph_varpool_nodes.
* cgraph.h (struct cgraph_varpool_node): Add next.
(cgraph_node_for_asm, cgraph_varpool_node_for_asm): Declare.
* varasm.c (assemble_alias): Mark the target as needed.
From-SVN: r92803
2005-01-01 23:52:31 -08:00
Kazu Hirata
1f83835576
c-cppbuiltin.c, [...]: Fix comment typos.
...
* c-cppbuiltin.c, cgraph.c, domwalk.h, except.c, gimplify.c,
lambda-code.c, postreload.c, predict.c, tree-sra.c,
tree-ssa-loop-manip.c, tree.c: Fix comment typos.
From-SVN: r90596
2004-11-13 21:11:04 +00:00
Ben Elliston
1590235e1e
cgraph.h (cgraph_calls_p): Remove.
...
* cgraph.h (cgraph_calls_p): Remove.
* cgraph.c (cgraph_calls_p): Likewise.
* varray.h (varray_copy): Remove.
* varray.c (varray_copy): Likewise.
From-SVN: r90261
2004-11-08 18:42:56 +11:00
Kenneth Zadeck
85c33455ea
patch to remove the analysis of module level static variables.
...
From-SVN: r89559
2004-10-25 22:04:02 +00:00
Jan Hubicka
8f2353433c
re PR middle-end/16460 (ICE when compiling glibc (ld-ctype.c))
...
PR middle-end/16460
* cgraph.c (cgraph_unnest_node): New function.
(c_finalize): Rename to ....
(c_warn_unused_result_recursivly): ... this one; do only the warning
(finish_function): Finalize the toplevel function; do not lower nested tree.
* cgraph.h (cgraph_unnest_node): Declare.
* cgraphunit.c (decide_is_function_needed): Do not use cgraph
nestedness datastructure.
* cse.c (cse_insn): Do not cprop nonlocal LABEL_REFs.
* reload1.c (set_label_offsets): Fix call of set_label_offsets.
* tree-nested.c (finlize_nesting_tree_1): Use un-nesting code.
* utils.c (gnat_finalize): Remove.
(end_subprog_body): Directly call cgraph_finalize_function;
do not lower the nested functions.
* trans-decl.c (build_entry_thunks): Finalize the function; do not lower
tree.
(gfc_generate_function_code): Likewise.
From-SVN: r87770
2004-09-20 20:38:29 +00:00
Kenneth Zadeck
6674a6ce49
New code to analyze file level static variables and to determine if...
...
New code to analyze file level static variables and to determine if
they escape and also code to use this information to prune clobber
lists.
From-SVN: r87455
2004-09-13 22:51:01 +00:00
Jan Hubicka
8948052222
cgraph.c (cgraph_remove_node): Free DECL_INITIAL field of node.
...
* cgraph.c (cgraph_remove_node): Free DECL_INITIAL field of node.
* cgraphunit.c (verify_cgraph): Don't verify on syntax errors.
(cgraph_expand_function): Remove stale cgraph edges of currently
compiled function; fix non-unit-at-a-time code copying function
node for later reuse.
From-SVN: r87181
2004-09-08 09:28:06 +00:00
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
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
30719c65a9
* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
...
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node): Hash on the pointer to the decl, not
the DECL_UID. Fixes 64-bit bootstrap failure.
From-SVN: r82059
2004-05-20 16:02:35 +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
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
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
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
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
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
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
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
6614fd40d2
alias.c: Fix comment formatting.
...
* alias.c: Fix comment formatting.
* alloc-pool.c: Likewise.
* bitmap.c: Likewise.
* bitmap.h: Likewise.
* bt-load.c: Likewise.
* c-common.c: Likewise.
* c-common.h: Likewise.
* c-decl.c: Likewise.
* c-opts.c: Likewise.
* c-pretty-print.c: Likewise.
* caller-save.c: Likewise.
* cfghooks.h: Likewise.
* cgraph.c: Likewise.
* collect2.c: Likewise.
* cppfiles.c: Likewise.
* cpplib.h: Likewise.
* dwarf2out.c: Likewise.
* dwarfout.c: Likewise.
* emit-rtl.c: Likewise.
* final.c: Likewise.
* function.c: Likewise.
* gcov.c: Likewise.
* gcse.c: Likewise.
* genemit.c: Likewise.
* ggc.h: Likewise.
* haifa-sched.c: Likewise.
* ifcvt.c: Likewise.
* libgcc2.h: Likewise.
* loop.c: Likewise.
* predict.h: Likewise.
* unwind-libunwind.c: Likewise.
* varasm.c: Likewise.
From-SVN: r74907
2003-12-21 14:08:35 +00:00
Jan Hubicka
df964a183f
* cgraph.c (change_decl_assembler_name): Avoid bogus warnings.
...
From-SVN: r73703
2003-11-18 14:52:28 +00:00
Jan Hubicka
fccc4eb240
re PR rtl-optimization/12275 ([unit-at-a-time] ICE in htab_clear_slot)
...
PR opt/12275
* c-decl.c (finish_decl): Use change_decl_assembler_name.
* c-pragma.c (handle_pragma_redefine_extname): Likewise.
* varasm.c (make_decl_rtl): Likewise.
* cgraph.c (change_decl_assembler_name): New function.
* tree.h (set_decl_assembler_name): Kill dead declaration.
(change_decl_assembler_name): Declare.
* decl.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.
* decl2.c (make_rtl_for_nonlocal_decl): Use change_decl_assembler_name.
From-SVN: r73532
2003-11-13 02:07:57 +00:00
Jan Hubicka
cc515291bf
cgraphunit.c (cgraph_function_possibly_inlined_p): Use really_no_inline.
...
* cgraphunit.c (cgraph_function_possibly_inlined_p): Use
really_no_inline.
From-SVN: r73454
2003-11-11 17:43:45 +00:00
Jan Hubicka
190f08bd30
cgraph.c (cgraph_function_possibly_inlined_p): Be conservative when global info is not ready.
...
* cgraph.c (cgraph_function_possibly_inlined_p): Be conservative when
global info is not ready.
From-SVN: r72816
2003-10-22 19:18:03 +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
Josef Zlomek
b97e92ed3a
cgraph.c (cgraph_node): Use INSERT instead of 1 in htab_find_slot_with_hash.
...
* cgraph.c (cgraph_node): Use INSERT instead of 1 in
htab_find_slot_with_hash.
(cgraph_node_for_identifier): Use NO_INSERT.
(cgraph_remove_node): Use NO_INSERT.
(cgraph_varpool_node): Use INSERT.
(cgraph_varpool_node_for_identifier): Use NO_INSERT.
From-SVN: r72031
2003-10-02 15:11:40 +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
7dd87381a6
* cgraph.c: Fix typo in debugging output.
...
From-SVN: r71567
2003-09-19 12:43:14 +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
Jan Hubicka
ba245151fc
cgraph.c (cgraph_mark_reachable_node): Only enqueue finalized functions.
...
* cgraph.c (cgraph_mark_reachable_node): Only enqueue finalized
functions.
(cgraph_varpool_finalize_decl): Notice global symbol when needed.
From-SVN: r71149
2003-09-06 22:47:19 +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
Jan Hubicka
810db5799b
cgraph.c (cgraph_mark_needed_node): Call notice_global_symbol.
...
* cgraph.c (cgraph_mark_needed_node): Call notice_global_symbol.
(cgraph_varpool_mark_needed_node): Likewise.
* cgraph.h (notice_global_symbol): Declare
* varasm.c (notice_global_symbol): Break out from ...
(assemble_start_function): ... here; update for variables.
(assemble_variable): Use notice_global_symbol.
From-SVN: r70559
2003-08-19 07:37:07 +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
fdacb904ee
cgraph.c (create_edge): Fix typo.
...
* cgraph.c (create_edge): Fix typo.
* i386.c (pic_symbolic_operand): Reorder tests.
From-SVN: r70006
2003-07-31 17:50:54 +00:00
Jan Hubicka
2ee1067b6b
* cgraph.c (cgraph_remove_node): Clear the hash table slot.
...
From-SVN: r69562
2003-07-18 15:13:35 +00:00
Andreas Jaeger
439f7bc3e8
fp-test.c (main): Use ISO C90 prototype.
...
* fp-test.c (main): Use ISO C90 prototype.
* version.c: Remove unneded include of ansidecl.h.
* cgraph.h: Convert prototypes to ISO C90.
* cgraph.c: Likewise.
* fix-header.c: Likewise.
* ra.h: Likewise.
* protoize.c: Likewise.
From-SVN: r69265
2003-07-12 13:29:18 +02: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
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
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
ed2df68b4b
Makefile.in (GTFILES): Add cgraph.h.
...
* Makefile.in (GTFILES): Add cgraph.h.
* cgraph.c (known_decls): Remove.
(cgraph_hash, cgraph_nodes, cgraph_nodes_queue,
cgraph_varpool_hash, cgraph_varpool_nodes_queue): GTYize.
(cgraph_node): Do not allocate known_decls; use polutate hashtable.
(cgraph_varpool_node): Likewise; add next pointer.
(cgraph_varpool_nodes): New static variable.
* cgraph.h (cgraph_local_info, cgraph_global_info, cgraph_rtl_info,
cgraph_node, cgraph_edge, cgraph_varpool_node, cgraph_nodes, cgraph_n_nodes,
cgraph_varpool_n_nodes, cgraph_varpool_nodes_queue): GTYize.
* gengtype.c (open_base_files): Include cgraph.h
From-SVN: r68742
2003-06-30 21:56:46 +00:00
Kazu Hirata
f1ba665bc7
builtins.c: Follow spelling conventions.
...
* builtins.c: Follow spelling conventions.
* cgraph.c: Likewise.
* cpplex.c: Likewise.
* config/arm/arm.c: Likewise.
* config/arm/iwmmxt.md: Likewise.
* config/c4x/c4x-modes.def: Likewise.
* config/c4x/c4x.c: Likewise.
* config/c4x/c4x.h: Likewise.
* config/c4x/c4x.md: Likewise.
* config/i386/i386-interix.h: Likewise.
* config/mips/mips.h: Likewise.
From-SVN: r68648
2003-06-28 19:43:01 +00:00
Jan Hubicka
67f2899de2
cgraph.c (cgraph_node, [...]): Avoid re-initializing of known_decls.
...
* cgraph.c (cgraph_node, cgraph_varpool_node): Avoid re-initializing
of known_decls.
From-SVN: r68573
2003-06-27 15:42:48 +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
Kaveh R. Ghazi
fad205ffba
decl.c, [...]: Don't use the PTR macro.
...
cp:
* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
macro.
gcc:
* bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c,
config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c,
dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c,
function.c, gcc.c, genoutput.c, gensupport.c, global.c,
haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c,
loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c,
read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c,
stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use
the PTR macro.
From-SVN: r68043
2003-06-16 21:41:10 +00:00
Kazu Hirata
6356f89288
ChangeLog: Follow spelling conventions.
...
* ChangeLog: Follow spelling conventions.
* ChangeLog.2: Likewise.
* c-decl.c: Likewise.
* cfgloop.h: Likewise.
* cgraph.c: Likewise.
* coverage.c: Likewise.
* cppcharset.c: Likewise.
* cpphash.h: Likewise.
* cpplex.c: Likewise.
* cpplib.c: Likewise.
* dbxout.c: Likewise.
* df.c: Likewise.
* dwarf2out.c: Likewise.
* dwarfout.c: Likewise.
* emit-rtl.c: Likewise.
* explow.c: Likewise.
* gcov-io.c: Likewise.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
* gengtype.c: Likewise.
* ggc.h: Likewise.
* opts.c: Likewise.
* real.c: Likewise.
* reload.c: Likewise.
* stmt.c: Likewise.
From-SVN: r67849
2003-06-12 19:01:08 +00:00
Jan Hubicka
988d165386
Makefile.in (cgraph.o): Depend on gt-cgraph.h and varray.h.
...
* Makefile.in (cgraph.o): Depend on gt-cgraph.h and varray.h.
* gt-cgraph.h: New GC file.
* cgraph.c (known_fns): New static variable.
(cgraph_node): Add the decl into varray.
From-SVN: r63998
2003-03-08 18:24:22 +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
5c2e00ee5a
* cgraph.c (cgraph_node): Do not confuse nested functions and methods.
...
From-SVN: r63889
2003-03-06 13:30:22 +00:00
Jan Hubicka
b255a03659
Makefile.in (calls.o, [...]): Depend on cgraph.h
...
* Makefile.in (calls.o, toplev.o alias.o): Depend on cgraph.h
* alias.c: Include cgraph.h
(mark_constant_function): Use cgraph_rtl_info.
* calls.c: Include cgraph.h
(flags_from_decl_or_type): Use cgraph_rtl_info to find pure and const
calls.
(expand_call): Use cgraph_rtl_info to set preferred stack boundary.
* cgraph.c (cgraph_rtl_info): New function.
* cgraph.h (cgraph_rtl_info): Declare
(cgraph_rtl_info): Likewise.
* function.h (struct function): Add recursive_call_emit.
* toplev.c: Include cgraph.h.
(rest_of_compilation): Set preferred_incoming_stack_boundary.
* gcc.dg/i386-local2.c: New.
From-SVN: r63868
2003-03-05 22:19:33 +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
Jan Hubicka
c001c39bbb
cgraph.c (NPREDECESORC, [...]): Kill.
...
* cgraph.c (NPREDECESORC, SET_NPREDECESORS): Kill.
(cgraph_expand_function): Rewrite.
* gcc.dg/funcorder.c: New test.
From-SVN: r63098
2003-02-19 10:24:56 +00:00
Andreas Schwab
9fb93b00b0
cgraph.c (SET_NPREDECESORS): Add intermediate cast to size_t.
...
* cgraph.c (SET_NPREDECESORS): Add intermediate cast to size_t.
Parenthesize properly.
(NPREDECESORS): Parenthesize properly.
From-SVN: r62838
2003-02-13 12:28:26 +00:00
Jan Hubicka
e72fcfe8e4
Makefile.in (CRTSTUFF_CFLAGS): Add -fno-unit-at-a-time
...
* Makefile.in (CRTSTUFF_CFLAGS): Add -fno-unit-at-a-time
(OBJS): Add callgraph.o
(callgraph.o): New.
* c-decl.c (expand_body_1): Break out from ...
(expand_body): This one; change calling convention
(finish_function): Move some of expand_body logic here.
(c_expand_deferred_function): Update call of expand_body
(c_expand_stmt): Use c_expand_body_1.
* c-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
* c-objc-commin.c (c_objc_common_finish_file): Use callgraph code.
* c-tree.h (c_expand_body): Declare.
* callgraph.c: New file.
* flags.h (flag_unit_at_a_time): Declare.
* langhooks.h (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION,
LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
LANG_HOOKS_CALLGRAPH_INITIALIZER): New macros.
* langhooks.h (struct lang_hooks_for_callgraph): New.
(struct lang_hooks): Add callgraph field.
* toplev.c (flag_unit_at_a_time): New.
(lang_independent_options): Add flag_unit_at_a_time.
(process_options): Disable unit-at-a-time mode for frontends not
supporting callgraph.
* tree-inline.c (typedef struct inline_data): Add "decl"
(expand_call_inline): Update callgraph.
(optimize_inline_calls): Set id.decl.
* tree.h (cgraph_finalize_function, cgraph_finalize_compilation_unit,
cgraph_create_edges, dump_cgraph, cgraph_optimize, cgraph_remove_call
cgraph_calls_p): Declare.
* invoke.texi (-funit-at-a-time): Document
From-SVN: r62789
2003-02-12 21:48:59 +00:00