From: Ivo Raisr Date: Sat, 16 Sep 2017 16:48:36 +0000 (+0200) Subject: Fix a typo bug in VEX register allocator v3. X-Git-Tag: VALGRIND_3_14_0~258 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9df4c8dec4d3154257818eb81111df43f2a7bf2;p=thirdparty%2Fvalgrind.git Fix a typo bug in VEX register allocator v3. Also scanning a few more instructions ahead helps producing better code. --- diff --git a/VEX/priv/host_generic_reg_alloc3.c b/VEX/priv/host_generic_reg_alloc3.c index 8ee4e482b8..5b2a9f2fa0 100644 --- a/VEX/priv/host_generic_reg_alloc3.c +++ b/VEX/priv/host_generic_reg_alloc3.c @@ -323,7 +323,7 @@ static inline HReg find_vreg_to_spill( - reg_usage[scan_forward_from] - reg_usage[scan_forward_end], where scan_forward_end = MIN(scan_forward_max, scan_forward_from + FEW_INSTRUCTIONS). */ -# define FEW_INSTRUCTIONS 5 +# define FEW_INSTRUCTIONS 20 UInt scan_forward_end = (scan_forward_max <= scan_forward_from + FEW_INSTRUCTIONS) ? scan_forward_max : scan_forward_from + FEW_INSTRUCTIONS; @@ -344,10 +344,10 @@ static inline HReg find_vreg_to_spill( } } - if (ii - scan_forward_from > distance_so_far) { - distance_so_far = ii = scan_forward_from; + if (ii >= distance_so_far) { + distance_so_far = ii; vreg_found = vreg; - if (ii + distance_so_far == scan_forward_end) { + if (distance_so_far == scan_forward_end) { break; /* We are at the end. Nothing could be better. */ } }