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:
Jan Hubicka 2004-01-17 01:03:14 +01:00 committed by Jan Hubicka
parent d440f6424f
commit 3b75d796ac
4 changed files with 31 additions and 5 deletions

View File

@ -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> 2004-01-16 Eric Christopher <echristo@redhat.com>
Chandrakala Chavva <cchavva@redhat.com> Chandrakala Chavva <cchavva@redhat.com>

View File

@ -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); *count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
} }
break; 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 /* Few special cases of expensive operations. This is usefull
to avoid inlining on functions having too many of these. */ to avoid inlining on functions having too many of these. */
case TRUNC_DIV_EXPR: 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 FLOOR_MOD_EXPR:
case ROUND_MOD_EXPR: case ROUND_MOD_EXPR:
case RDIV_EXPR: case RDIV_EXPR:
case CALL_EXPR:
*count += 10; *count += 10;
break; break;
/* Various containers that will produce no code themselves. */ /* Various containers that will produce no code themselves. */

View File

@ -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 by the compiler will be investigated. To those functions, a different
(more restrictive) limit compared to functions declared inline can (more restrictive) limit compared to functions declared inline can
be applied. be applied.
The default value is 150. The default value is 120.
@item large-function-insns @item large-function-insns
The limit specifying really large functions. For functions greater than this 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 This parameter is useful primarily to avoid extreme compilation time caused by non-linear
algorithms used by the backend. algorithms used by the backend.
This parameter is ignored when @option{-funit-at-a-time} is not used. 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 @item large-function-growth
Specifies maximal growth of large functtion caused by inlining in percents. Specifies maximal growth of large functtion caused by inlining in percents.

View File

@ -63,7 +63,7 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO, DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
"max-inline-insns-auto", "max-inline-insns-auto",
"The maximum number of instructions when automatically inlining", "The maximum number of instructions when automatically inlining",
150) 120)
/* For languages that (still) use the RTL inliner, we can specify /* For languages that (still) use the RTL inliner, we can specify
limits for the RTL inliner separately. limits for the RTL inliner separately.
@ -110,7 +110,7 @@ DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH,
DEFPARAM(PARAM_LARGE_FUNCTION_INSNS, DEFPARAM(PARAM_LARGE_FUNCTION_INSNS,
"large-function-insns", "large-function-insns",
"The size of function body to be considered large", "The size of function body to be considered large",
10000) 3000)
DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH, DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH,
"large-function-growth", "large-function-growth",
"Maximal growth due to inlining of large function (in percent)", "Maximal growth due to inlining of large function (in percent)",