* 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
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ChangeLog | Loading commit data... | |
| ChangeLog.0 | Loading commit data... | |
| Make-lang.in | Loading commit data... | |
| RELEASE-PREP | Loading commit data... | |
| ansify.c | Loading commit data... | |
| bad.c | Loading commit data... | |
| bad.def | Loading commit data... | |
| bad.h | Loading commit data... | |
| bit.c | Loading commit data... | |
| bit.h | Loading commit data... | |
| bld-op.def | Loading commit data... | |
| bld.c | Loading commit data... | |
| bld.h | Loading commit data... | |
| bugs.texi | Loading commit data... | |
| bugs0.texi | Loading commit data... | |
| com-rt.def | Loading commit data... | |
| com.c | Loading commit data... | |
| com.h | Loading commit data... | |
| config-lang.in | Loading commit data... | |
| data.c | Loading commit data... | |
| data.h | Loading commit data... | |
| equiv.c | Loading commit data... | |
| equiv.h | Loading commit data... | |
| expr.c | Loading commit data... | |
| expr.h | Loading commit data... | |
| ffe.texi | Loading commit data... | |
| fini.c | Loading commit data... | |
| g77.texi | Loading commit data... | |
| g77spec.c | Loading commit data... | |
| global.c | Loading commit data... | |
| global.h | Loading commit data... | |
| implic.c | Loading commit data... | |
| implic.h | Loading commit data... | |
| info-b.def | Loading commit data... | |
| info-k.def | Loading commit data... | |
| info-w.def | Loading commit data... | |
| info.c | Loading commit data... | |
| info.h | Loading commit data... | |
| intdoc.c | Loading commit data... | |
| intdoc.in | Loading commit data... | |
| intdoc.texi | Loading commit data... | |
| intrin.c | Loading commit data... | |
| intrin.def | Loading commit data... | |
| intrin.h | Loading commit data... | |
| invoke.texi | Loading commit data... | |
| lab.c | Loading commit data... | |
| lab.h | Loading commit data... | |
| lang-specs.h | Loading commit data... | |
| lang.opt | Loading commit data... | |
| lex.c | Loading commit data... | |
| lex.h | Loading commit data... | |
| malloc.c | Loading commit data... | |
| malloc.h | Loading commit data... | |
| name.c | Loading commit data... | |
| name.h | Loading commit data... | |
| news.texi | Loading commit data... | |
| news0.texi | Loading commit data... | |
| parse.c | Loading commit data... | |
| proj.h | Loading commit data... | |
| root.texi | Loading commit data... | |
| src.c | Loading commit data... | |
| src.h | Loading commit data... | |
| st.c | Loading commit data... | |
| st.h | Loading commit data... | |
| sta.c | Loading commit data... | |
| sta.h | Loading commit data... | |
| stb.c | Loading commit data... | |
| stb.h | Loading commit data... | |
| stc.c | Loading commit data... | |
| stc.h | Loading commit data... | |
| std.c | Loading commit data... | |
| std.h | Loading commit data... | |
| ste.c | Loading commit data... | |
| ste.h | Loading commit data... | |
| storag.c | Loading commit data... | |
| storag.h | Loading commit data... | |
| stp.c | Loading commit data... | |
| stp.h | Loading commit data... | |
| str-1t.fin | Loading commit data... | |
| str-2t.fin | Loading commit data... | |
| str-fo.fin | Loading commit data... | |
| str-io.fin | Loading commit data... | |
| str-nq.fin | Loading commit data... | |
| str-op.fin | Loading commit data... | |
| str-ot.fin | Loading commit data... | |
| str.c | Loading commit data... | |
| str.h | Loading commit data... | |
| sts.c | Loading commit data... | |
| sts.h | Loading commit data... | |
| stt.c | Loading commit data... | |
| stt.h | Loading commit data... | |
| stu.c | Loading commit data... | |
| stu.h | Loading commit data... | |
| stv.c | Loading commit data... | |
| stv.h | Loading commit data... | |
| stw.c | Loading commit data... | |
| stw.h | Loading commit data... | |
| symbol.c | Loading commit data... | |
| symbol.def | Loading commit data... | |
| symbol.h | Loading commit data... | |
| target.c | Loading commit data... | |
| target.h | Loading commit data... | |
| top.c | Loading commit data... | |
| top.h | Loading commit data... | |
| type.c | Loading commit data... | |
| type.h | Loading commit data... | |
| where.c | Loading commit data... | |
| where.h | Loading commit data... |