Hi,

either it was added very late or I simply missed it in last stage1,
but currently IPA-CP does not use INLINE_HINT_array_index in any way.
This patch incorporates it to heuristics computations.  I chose the
bonus value to simply be slightly smaller than the bonuses for known
strides and sizes, I plan to re-examine them once we have better
aggregate jump functions and we start getting these hints in real
Fortran benchmarks.

Bootstrapped and tested on x86_64-linux.  OK for trunk?

Thanks,

Martin


2013-01-21  Martin Jambor  <mjam...@suse.cz>

        * params.def (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): New parameter.
        * ipa-cp.c (hint_time_bonus): Add abonus for known array indices.

Index: src/gcc/ipa-cp.c
===================================================================
--- src.orig/gcc/ipa-cp.c
+++ src/gcc/ipa-cp.c
@@ -1606,9 +1606,12 @@ devirtualization_time_bonus (struct cgra
 static int
 hint_time_bonus (inline_hints hints)
 {
+  int result = 0;
   if (hints & (INLINE_HINT_loop_iterations | INLINE_HINT_loop_stride))
-    return PARAM_VALUE (PARAM_IPA_CP_LOOP_HINT_BONUS);
-  return 0;
+    result += PARAM_VALUE (PARAM_IPA_CP_LOOP_HINT_BONUS);
+  if (hints & INLINE_HINT_array_index)
+    result += PARAM_VALUE (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS);
+  return result;
 }
 
 /* Return true if cloning NODE is a good idea, given the estimated TIME_BENEFIT
Index: src/gcc/params.def
===================================================================
--- src.orig/gcc/params.def
+++ src/gcc/params.def
@@ -919,6 +919,12 @@ DEFPARAM (PARAM_IPA_CP_LOOP_HINT_BONUS,
          "bounds or strides known.",
          64, 0, 0)
 
+DEFPARAM (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS,
+         "ipa-cp-array-index-hint-bonus",
+         "Compile-time bonus IPA-CP assigns to candidates which make an array "
+         "index known.",
+         48, 0, 0)
+
 /* WHOPR partitioning configuration.  */
 
 DEFPARAM (PARAM_LTO_PARTITIONS,

Reply via email to