From 125cae84d04faa9a4eb33e238caa5955c9dadd5f Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 15 May 2009 11:53:18 +0200 Subject: cgraph.c (dump_cgraph_node): Dump size/time/benefit. * cgraph.c (dump_cgraph_node): Dump size/time/benefit. * cgraph.h (struct inline_summary): New filed self_wize, size_inlining_benefit, self_time and time_inlining_benefit. (struct cgraph_global_info): Replace insns by time ans size fields. * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size (ipcp_estimate_growth, ipcp_insert_stage): Likewise. (ipcp_update_callgraph): Do not touch function bodies. * ipa-inline.c: Include except.h MAX_TIME: New constant. (overall_insns): Remove (overall_size, max_benefit): New static variables. (cgraph_estimate_time_after_inlining): New function. (cgraph_estimate_size_after_inlining): Rewrite using benefits. (cgraph_clone_inlined_nodes): Update size. (cgraph_mark_inline_edge): Update size. (cgraph_estimate_growth): Use size info. (cgraph_check_inline_limits): Check size. (cgraph_default_inline_p): Likewise. (cgraph_edge_badness): Compute badness based on benefit and size cost. (cgraph_decide_recursive_inlining): Check size. (cgraph_decide_inlining_of_small_function): Update size; dump sizes and times. (cgraph_decide_inlining): Likewise. (cgraph_decide_inlining_incrementally): Likewise; honor PARAM_EARLY_INLINING_INSNS. (likely_eliminated_by_inlining_p): New predicate. (estimate_function_body_sizes): New function. (compute_inline_parameters): Use it. * except.c (must_not_throw_labels): New function. * except.h (must_not_throw_labels): Declare. * tree-inline.c (init_inline_once): Kill inlining_weigths * tree-ssa-structalias.c: Avoid uninitialized warning. * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300. (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60. (PARAM_INLINE_CALL_COST): Remove. (PARAM_EARLY_INLINING_INSNS): New. doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update. (inline-call-cost): Remove. (early-inlining-insns): New. From-SVN: r147566 --- gcc/doc/invoke.texi | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'gcc/doc/invoke.texi') diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index da5ea90..3dbb8c5 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -7375,7 +7375,7 @@ This number sets the maximum number of instructions (counted in GCC's internal representation) in a single function that the tree inliner will consider for inlining. This only affects functions declared inline and methods implemented in a class declaration (C++). -The default value is 450. +The default value is 300. @item max-inline-insns-auto When you use @option{-finline-functions} (included in @option{-O3}), @@ -7383,7 +7383,7 @@ a lot of functions that would otherwise not be considered for inlining by the compiler will be investigated. To those functions, a different (more restrictive) limit compared to functions declared inline can be applied. -The default value is 90. +The default value is 60. @item large-function-insns The limit specifying really large functions. For functions larger than this @@ -7461,14 +7461,9 @@ given call expression. This parameter limits inlining only to call expression whose probability exceeds given threshold (in percents). The default value is 10. -@item inline-call-cost -Specify cost of call instruction relative to simple arithmetics operations -(having cost of 1). Increasing this cost disqualifies inlining of non-leaf -functions and at the same time increases size of leaf function that is believed to -reduce function size by being inlined. In effect it increases amount of -inlining for code having large abstraction penalty (many functions that just -pass the arguments to other functions) and decrease inlining for code with low -abstraction penalty. The default value is 12. +@item early-inlining-insns +Specify growth that early inliner can make. In effect it increases amount of +inlining for code having large abstraction penalty. The default value is 12. @item min-vect-loop-bound The minimum number of iterations under which a loop will not get vectorized -- cgit v1.1