From 3b75d796acf9c22722078351834c383093297e01 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 17 Jan 2004 01:03:14 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 9 +++++++++ gcc/c-common.c | 19 ++++++++++++++++++- gcc/doc/invoke.texi | 4 ++-- gcc/params.def | 4 ++-- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a3d1fdfaca..8d017a1b50c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2004-01-17 Jan 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. + 2004-01-16 Eric Christopher Chandrakala Chavva diff --git a/gcc/c-common.c b/gcc/c-common.c index dcd540b1d85..87ff0536e1e 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -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. */ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f7182f081ea..be25392a982 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -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. diff --git a/gcc/params.def b/gcc/params.def index 3f0d15b1854..0d905090980 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -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)",