Hi,
as noticed when bootstrapping ppc, it may happen that !exec does not imply
nonconst becuase predicates are computed conservatively and we can throw away
some information.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

        * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
        that nonconst implies exec.
Index: ipa-fnsummary.c
===================================================================
--- ipa-fnsummary.c     (revision 248365)
+++ ipa-fnsummary.c     (working copy)
@@ -2738,11 +2738,14 @@ estimate_node_size_and_time (struct cgra
 
   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);
 

Reply via email to