From 199b1861d65c76d138a15179ea9b4ff4925470bb Mon Sep 17 00:00:00 2001 From: florian <florian@freepascal.org> Date: Fri, 28 Aug 2015 18:49:04 +0000 Subject: [PATCH] * fix wrong comparisons in trgobj.conservative to enable better coalescing, before this patch, k was calculated wrong most of the time git-svn-id: trunk@31439 - --- compiler/rgobj.pas | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/rgobj.pas b/compiler/rgobj.pas index cf0d5d50ae..8f3673d454 100644 --- a/compiler/rgobj.pas +++ b/compiler/rgobj.pas @@ -21,10 +21,11 @@ {$i fpcdefs.inc} +{ $define DEBUG_REGALLOC} + { Allow duplicate allocations, can be used to get the .s file written } { $define ALLOWDUPREG} - unit rgobj; interface @@ -577,9 +578,9 @@ unit rgobj; insert_regalloc_info_all(list); ibitmap:=tinterferencebitmap.create; generate_interference_graph(list,headertai); -{$ifdef DEBUG_SSA} +{$ifdef DEBUG_REGALLOC} writegraph(rtindex); -{$endif DEBUG_SSA} +{$endif DEBUG_REGALLOC} inc(rtindex); { Don't do the real allocation when -sr is passed } if (cs_no_regalloc in current_settings.globalswitches) then @@ -1116,7 +1117,7 @@ unit rgobj; for i:=1 to adj^.length do begin n:=adj^.buf^[i-1]; - if flags*[ri_coalesced,ri_selected]=[] then + if reginfo[n].flags*[ri_coalesced,ri_selected]=[] then begin supregset_include(done,n); if reginfo[n].degree>=usable_registers_cnt then @@ -1131,7 +1132,7 @@ unit rgobj; n:=adj^.buf^[i-1]; if not supregset_in(done,n) and (reginfo[n].degree>=usable_registers_cnt) and - (reginfo[u].flags*[ri_coalesced,ri_selected]=[]) then + (reginfo[n].flags*[ri_coalesced,ri_selected]=[]) then inc(k); end; conservative:=(k<usable_registers_cnt);