Hi, the following patch silence overactive sanity check which now fires due to roundoff errors of sreals. Because this affects some bootstraps I am commiting it tonight. I will add testcase tomorrow. My apologizes for the breakage.
Bootstrapped/regtested x86_64-linux. Honza * ipa-inline-analysis.c (estimate_node_size_and_time): Allow rondoff errors when comparing specialized and unspecialized times. Index: ipa-inline-analysis.c =================================================================== --- ipa-inline-analysis.c (revision 247436) +++ ipa-inline-analysis.c (working copy) @@ -3422,7 +3422,15 @@ estimate_node_size_and_time (struct cgra min_size = (*info->entry)[0].size; gcc_checking_assert (size >= 0); gcc_checking_assert (time >= 0); - gcc_checking_assert (nonspecialized_time >= time); + /* nonspecialized_time should be always bigger than specialized time. + Roundoff issues however may get into the way. */ + gcc_checking_assert ((nonspecialized_time - time) >= -1); + + /* Roundoff issues may make specialized time bigger than nonspecialized + time. We do not really want that to happen because some heurstics + may get confused by seeing negative speedups. */ + if (time > nonspecialized_time) + time = nonspecialized_time; if (info->loop_iterations && !evaluate_predicate (info->loop_iterations, possible_truths))