+2018-11-07 Martin Liska <mliska@suse.cz>
+
+ PR rtl-optimization/87868
+ * postreload-gcse.c (eliminate_partially_redundant_load): Set
+ threshold to max_count if we would overflow.
+ * profile-count.h: Make max_count a public constant.
+
2018-11-07 Martin Liska <mliska@suse.cz>
* mem-stats.h: Fix GNU coding style.
if (ok_count.to_gcov_type ()
< GCSE_AFTER_RELOAD_PARTIAL_FRACTION * not_ok_count.to_gcov_type ())
goto cleanup;
- if (ok_count.to_gcov_type ()
- < GCSE_AFTER_RELOAD_CRITICAL_FRACTION * critical_count.to_gcov_type ())
+
+ gcov_type threshold;
+#if (GCC_VERSION >= 5000)
+ if (__builtin_mul_overflow (GCSE_AFTER_RELOAD_CRITICAL_FRACTION,
+ critical_count.to_gcov_type (), &threshold))
+ threshold = profile_count::max_count;
+#else
+ threshold
+ = GCSE_AFTER_RELOAD_CRITICAL_FRACTION * critical_count.to_gcov_type ();
+#endif
+
+ if (ok_count.to_gcov_type () < threshold)
goto cleanup;
/* Generate moves to the loaded register from where
type to hold various extra stages. */
static const int n_bits = 61;
-private:
static const uint64_t max_count = ((uint64_t) 1 << n_bits) - 2;
+private:
static const uint64_t uninitialized_count = ((uint64_t) 1 << n_bits) - 1;
uint64_t m_val : n_bits;