Fix UBSAN in postreload-gcse.c (PR rtl-optimization/87868).
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. From-SVN: r265869
This commit is contained in:
parent
9cfc08c049
commit
907050e34f
@ -1,3 +1,10 @@
|
||||
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.
|
||||
|
@ -1170,8 +1170,18 @@ eliminate_partially_redundant_load (basic_block bb, rtx_insn *insn,
|
||||
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
|
||||
|
@ -641,8 +641,8 @@ public:
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user