From b9df4c8dec4d3154257818eb81111df43f2a7bf2 Mon Sep 17 00:00:00 2001 From: Ivo Raisr Date: Sat, 16 Sep 2017 18:48:36 +0200 Subject: [PATCH] Fix a typo bug in VEX register allocator v3. Also scanning a few more instructions ahead helps producing better code. --- VEX/priv/host_generic_reg_alloc3.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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. */ } } -- 2.47.2