Fix nonspec_time when there is no cached value.
authorJan Hubicka <hubicka@ucw.cz>
Sat, 16 Nov 2019 09:51:09 +0000 (10:51 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 16 Nov 2019 09:51:09 +0000 (09:51 +0000)
* ipa-inline.h (do_estimate_edge_time): Add nonspec_time
parameter.
(estimate_edge_time): Use it.
* ipa-inline-analysis.c (do_estimate_edge_time): Add
ret_nonspec_time parameter.

From-SVN: r278333

gcc/ChangeLog
gcc/ipa-inline-analysis.c
gcc/ipa-inline.h

index ef62b5dee44f43c001a1a44874665fa917aceddb..db51b839b54c18c917d5c404825023186593aa3d 100644 (file)
@@ -1,3 +1,11 @@
+2019-11-15  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-inline.h (do_estimate_edge_time): Add nonspec_time
+       parameter.
+       (estimate_edge_time): Use it.
+       * ipa-inline-analysis.c (do_estimate_edge_time): Add
+       ret_nonspec_time parameter.
+
 2019-11-15  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * config/m68k/linux.h (MUSL_DYNAMIC_LINKER): Define.
index 1e124fd6ca939c4f1a368fd015b2d6483107e0fd..d550d30dc20d82831a1b8a32e59bb5051b213003 100644 (file)
@@ -179,7 +179,7 @@ simple_edge_hints (struct cgraph_edge *edge)
    size, since we always need both metrics eventually.  */
 
 sreal
-do_estimate_edge_time (struct cgraph_edge *edge)
+do_estimate_edge_time (struct cgraph_edge *edge, sreal *ret_nonspec_time)
 {
   sreal time, nonspec_time;
   int size;
@@ -275,6 +275,8 @@ do_estimate_edge_time (struct cgraph_edge *edge)
       hints |= simple_edge_hints (edge);
       entry->hints = hints + 1;
     }
+  if (ret_nonspec_time)
+    *ret_nonspec_time = nonspec_time;
   return time;
 }
 
index f650b0e83fae086d93333e56a673d8965fbba015..626f264d5d0892976b6f611cfafaab813235e8f0 100644 (file)
@@ -46,7 +46,7 @@ int estimate_size_after_inlining (struct cgraph_node *, struct cgraph_edge *);
 int estimate_growth (struct cgraph_node *);
 bool growth_positive_p (struct cgraph_node *, struct cgraph_edge *, int);
 int do_estimate_edge_size (struct cgraph_edge *edge);
-sreal do_estimate_edge_time (struct cgraph_edge *edge);
+sreal do_estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL);
 ipa_hints do_estimate_edge_hints (struct cgraph_edge *edge);
 void reset_node_cache (struct cgraph_node *node);
 void initialize_growth_caches ();
@@ -99,7 +99,7 @@ estimate_edge_time (struct cgraph_edge *edge, sreal *nonspec_time = NULL)
   if (edge_growth_cache == NULL
       || (entry = edge_growth_cache->get (edge)) == NULL
       || entry->time == 0)
-    return do_estimate_edge_time (edge);
+    return do_estimate_edge_time (edge, nonspec_time);
   if (nonspec_time)
     *nonspec_time = edge_growth_cache->get (edge)->nonspec_time;
   return entry->time;