|
@@ -805,6 +805,9 @@ implementation
|
|
|
position and switches }
|
|
|
aktfilepos:=entrypos;
|
|
|
aktlocalswitches:=entryswitches;
|
|
|
+
|
|
|
+ cg.set_regalloc_extend_backwards(true);
|
|
|
+
|
|
|
gen_entry_code(templist);
|
|
|
aktproccode.insertlistafter(entry_asmnode.currenttai,templist);
|
|
|
gen_initialize_code(templist);
|
|
@@ -814,6 +817,9 @@ implementation
|
|
|
and switches }
|
|
|
aktfilepos:=exitpos;
|
|
|
aktlocalswitches:=exitswitches;
|
|
|
+
|
|
|
+ cg.set_regalloc_extend_backwards(false);
|
|
|
+
|
|
|
gen_finalize_code(templist);
|
|
|
{ the finalcode must be concated if there was no position available,
|
|
|
using insertlistafter will result in an insert at the start
|
|
@@ -876,10 +882,13 @@ implementation
|
|
|
end;
|
|
|
|
|
|
{ load got if necessary }
|
|
|
+ cg.set_regalloc_extend_backwards(true);
|
|
|
aktfilepos:=entrypos;
|
|
|
gen_got_load(templist);
|
|
|
aktproccode.insertlistafter(headertai,templist);
|
|
|
|
|
|
+ cg.set_regalloc_extend_backwards(false);
|
|
|
+
|
|
|
{ The procedure body is finished, we can now
|
|
|
allocate the registers }
|
|
|
cg.do_register_allocation(aktproccode,headertai);
|