mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-14 09:29:46 +08:00
c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and builtin_expect specially.
* c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and builtin_expect specially. * params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100. (PARAM_LARGE_FUNCTION_INSNS): Set to 3000. * invoke.texi (max-inline-insns-single): Set to 100. (large-function-insns): Set to 3000. From-SVN: r76007
This commit is contained in:
parent
d440f6424f
commit
3b75d796ac
@ -1,3 +1,12 @@
|
||||
2004-01-17 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and
|
||||
builtin_expect specially.
|
||||
* params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100.
|
||||
(PARAM_LARGE_FUNCTION_INSNS): Set to 3000.
|
||||
* invoke.texi (max-inline-insns-single): Set to 100.
|
||||
(large-function-insns): Set to 3000.
|
||||
|
||||
2004-01-16 Eric Christopher <echristo@redhat.com>
|
||||
Chandrakala Chavva <cchavva@redhat.com>
|
||||
|
||||
|
@ -5780,6 +5780,24 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
|
||||
*count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
|
||||
}
|
||||
break;
|
||||
case CALL_EXPR:
|
||||
{
|
||||
tree decl = get_callee_fndecl (x);
|
||||
|
||||
if (decl && DECL_BUILT_IN (decl))
|
||||
switch (DECL_FUNCTION_CODE (decl))
|
||||
{
|
||||
case BUILT_IN_CONSTANT_P:
|
||||
*walk_subtrees = 0;
|
||||
return NULL_TREE;
|
||||
case BUILT_IN_EXPECT:
|
||||
return NULL_TREE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
*count += 10;
|
||||
break;
|
||||
}
|
||||
/* Few special cases of expensive operations. This is usefull
|
||||
to avoid inlining on functions having too many of these. */
|
||||
case TRUNC_DIV_EXPR:
|
||||
@ -5791,7 +5809,6 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
|
||||
case FLOOR_MOD_EXPR:
|
||||
case ROUND_MOD_EXPR:
|
||||
case RDIV_EXPR:
|
||||
case CALL_EXPR:
|
||||
*count += 10;
|
||||
break;
|
||||
/* Various containers that will produce no code themselves. */
|
||||
|
@ -4715,7 +4715,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 150.
|
||||
The default value is 120.
|
||||
|
||||
@item large-function-insns
|
||||
The limit specifying really large functions. For functions greater than this
|
||||
@ -4723,7 +4723,7 @@ limit inlining is constrained by @option{--param large-function-growth}.
|
||||
This parameter is useful primarily to avoid extreme compilation time caused by non-linear
|
||||
algorithms used by the backend.
|
||||
This parameter is ignored when @option{-funit-at-a-time} is not used.
|
||||
The default value is 30000.
|
||||
The default value is 3000.
|
||||
|
||||
@item large-function-growth
|
||||
Specifies maximal growth of large functtion caused by inlining in percents.
|
||||
|
@ -63,7 +63,7 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
|
||||
DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
|
||||
"max-inline-insns-auto",
|
||||
"The maximum number of instructions when automatically inlining",
|
||||
150)
|
||||
120)
|
||||
|
||||
/* For languages that (still) use the RTL inliner, we can specify
|
||||
limits for the RTL inliner separately.
|
||||
@ -110,7 +110,7 @@ DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH,
|
||||
DEFPARAM(PARAM_LARGE_FUNCTION_INSNS,
|
||||
"large-function-insns",
|
||||
"The size of function body to be considered large",
|
||||
10000)
|
||||
3000)
|
||||
DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH,
|
||||
"large-function-growth",
|
||||
"Maximal growth due to inlining of large function (in percent)",
|
||||
|
Loading…
Reference in New Issue
Block a user