From: Vladimir N. Makarov Date: Fri, 24 Sep 2021 14:06:45 +0000 (-0400) Subject: Make profitability calculation of RA conflict presentations independent of host compi... X-Git-Tag: basepoints/gcc-13~4432 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51ca05031959d3accffe873e87d4bc4fbd22e9e9;p=thirdparty%2Fgcc.git Make profitability calculation of RA conflict presentations independent of host compiler type sizes. [PR102147] gcc/ChangeLog: 2021-09-24 Vladimir Makarov PR rtl-optimization/102147 * ira-build.c (ira_conflict_vector_profitable_p): Make profitability calculation independent of host compiler pointer and IRA_INT_BITS sizes. --- diff --git a/gcc/ira-build.c b/gcc/ira-build.c index 421206563664..2a30efc4f2f1 100644 --- a/gcc/ira-build.c +++ b/gcc/ira-build.c @@ -629,7 +629,7 @@ ior_hard_reg_conflicts (ira_allocno_t a, const_hard_reg_set set) bool ira_conflict_vector_profitable_p (ira_object_t obj, int num) { - int nw; + int nbytes; int max = OBJECT_MAX (obj); int min = OBJECT_MIN (obj); @@ -638,9 +638,14 @@ ira_conflict_vector_profitable_p (ira_object_t obj, int num) in allocation. */ return false; - nw = (max - min + IRA_INT_BITS) / IRA_INT_BITS; - return (2 * sizeof (ira_object_t) * (num + 1) - < 3 * nw * sizeof (IRA_INT_TYPE)); + nbytes = (max - min) / 8 + 1; + STATIC_ASSERT (sizeof (ira_object_t) <= 8); + /* Don't use sizeof (ira_object_t), use constant 8. Size of ira_object_t (a + pointer) is different on 32-bit and 64-bit targets. Usage sizeof + (ira_object_t) can result in different code generation by GCC built as 32- + and 64-bit program. In any case the profitability is just an estimation + and border cases are rare. */ + return (2 * 8 /* sizeof (ira_object_t) */ * (num + 1) < 3 * nbytes); } /* Allocates and initialize the conflict vector of OBJ for NUM