From 7bb3a1fe22b7766e685ef4ec6a2e855c804012a4 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Tue, 25 Jul 2006 13:54:48 +0000 Subject: [PATCH] * fixed register allocation of gen_load_para_value() and backwards extension of regalloc info in general git-svn-id: trunk@4293 - --- compiler/psub.pas | 4 ++++ compiler/rgobj.pas | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/psub.pas b/compiler/psub.pas index 3b588095c7..a122d11512 100644 --- a/compiler/psub.pas +++ b/compiler/psub.pas @@ -792,7 +792,11 @@ implementation assign_regvars(code); {$endif oldreg} aktfilepos:=entrypos; + { record which registers are allocated here, since all code } + { allocating registers comes after it } + cg.set_regalloc_extend_backwards(true); gen_load_para_value(templist); + cg.set_regalloc_extend_backwards(false); { caller paraloc info is also necessary in the stackframe_entry code of the ppc (and possibly other processors) } diff --git a/compiler/rgobj.pas b/compiler/rgobj.pas index d6ff89be38..0ed9215030 100644 --- a/compiler/rgobj.pas +++ b/compiler/rgobj.pas @@ -371,6 +371,7 @@ unit rgobj; if high(Ausable)=0 then internalerror(200210181); extend_live_range_backwards := false; + supregset_reset(extended_backwards,false,high(tsuperregister)); first_imaginary:=Afirst_imaginary; maxreg:=Afirst_imaginary; regtype:=Aregtype; @@ -682,7 +683,6 @@ unit rgobj; if (b) then begin { new registers may be allocated } - supregset_reset(extended_backwards,false,high(tsuperregister)); supregset_reset(backwards_was_first,false,high(tsuperregister)); do_extend_live_range_backwards := true; end