+2007-09-24 Pranav Bhandarkar <pranav.bhandarkar@celunite.com>
+ Ramana Radhakrishnan <ramana@hercules.pun.celunite.com>
+
+ * tree-inline.h (eni_weights): Add field target_builtin_cost to
+ reflect the cost per call to a target specific builtin.
+ * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
+ call to a target specific builtin, then use target_builtin_call_cost.
+ (init_inline_once): Initialize target_builtin_call_cost field.
+
2007-09-24 Kai Tietz <kai.tietz@onevision.com>
PR middle-end/33472
{
tree decl = get_callee_fndecl (x);
- cost = d->weights->call_cost;
+ if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD)
+ cost = d->weights->target_builtin_call_cost;
+ else
+ cost = d->weights->call_cost;
+
if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
switch (DECL_FUNCTION_CODE (decl))
{
init_inline_once (void)
{
eni_inlining_weights.call_cost = PARAM_VALUE (PARAM_INLINE_CALL_COST);
+ eni_inlining_weights.target_builtin_call_cost = 1;
eni_inlining_weights.div_mod_cost = 10;
eni_inlining_weights.switch_cost = 1;
eni_inlining_weights.omp_cost = 40;
eni_size_weights.call_cost = 1;
+ eni_size_weights.target_builtin_call_cost = 1;
eni_size_weights.div_mod_cost = 1;
eni_size_weights.switch_cost = 10;
eni_size_weights.omp_cost = 40;
underestimating the cost does less harm than overestimating it, so
we choose a rather small value here. */
eni_time_weights.call_cost = 10;
+ eni_time_weights.target_builtin_call_cost = 10;
eni_time_weights.div_mod_cost = 10;
eni_time_weights.switch_cost = 4;
eni_time_weights.omp_cost = 40;