Commit 0261691a authored by hubicka's avatar hubicka

* 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.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76007 138bc75d-0d04-0410-961f-82ee72b054a4
parent ad6c8435
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>
......
...@@ -5780,6 +5780,24 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data) ...@@ -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) ...@@ -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. */
......
...@@ -4715,7 +4715,7 @@ a lot of functions that would otherwise not be considered for inlining ...@@ -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}. ...@@ -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.
......
...@@ -63,7 +63,7 @@ DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE, ...@@ -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, ...@@ -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)",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment