ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check that nonconst...
authorJan Hubicka <hubicka@ucw.cz>
Tue, 23 May 2017 12:20:05 +0000 (14:20 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 23 May 2017 12:20:05 +0000 (12:20 +0000)
* ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
that nonconst implies exec.

From-SVN: r248366

gcc/ChangeLog
gcc/ipa-fnsummary.c

index b45cd01b68cb5ee2f485174dc7273477270610bc..e5d00ec3bead7ac8cad2d8459ac348b996da46a2 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
+       that nonconst implies exec.
+
 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
index d9006d1e21893c0467046cec676670859e7fd820..0a5abb54780457c8f764d6487694ad21bdee757d 100644 (file)
@@ -2738,11 +2738,14 @@ estimate_node_size_and_time (struct cgraph_node *node,
 
   for (i = 0; vec_safe_iterate (info->size_time_table, i, &e); i++)
     {
-      bool nonconst = e->nonconst_predicate.evaluate (possible_truths);
       bool exec = e->exec_predicate.evaluate (nonspec_possible_truths);
-      gcc_assert (!nonconst || exec);
+
+      /* Because predicates are conservative, it can happen that nonconst is 1
+        but exec is 0.  */
       if (exec)
         {
+          bool nonconst = e->nonconst_predicate.evaluate (possible_truths);
+
          gcc_checking_assert (e->time >= 0);
          gcc_checking_assert (time >= 0);