summaryrefslogtreecommitdiff
path: root/compiler/cgobj.pas
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cgobj.pas')
-rw-r--r--compiler/cgobj.pas12
1 files changed, 10 insertions, 2 deletions
diff --git a/compiler/cgobj.pas b/compiler/cgobj.pas
index 473f673c8a..49a164effb 100644
--- a/compiler/cgobj.pas
+++ b/compiler/cgobj.pas
@@ -815,8 +815,15 @@ implementation
procedure tcg.translate_register(var reg : tregister);
+ var
+ rt: tregistertype;
begin
- rg[getregtype(reg)].translate_register(reg);
+ { Getting here without assigned rg is possible for an "assembler nostackframe"
+ function returning x87 float, compiler tries to translate NR_ST which is used for
+ result. }
+ rt:=getregtype(reg);
+ if assigned(rg[rt]) then
+ rg[rt].translate_register(reg);
end;
@@ -828,7 +835,8 @@ implementation
procedure tcg.a_reg_dealloc(list : TAsmList;r : tregister);
begin
- list.concat(tai_regalloc.dealloc(r,nil));
+ if (r<>NR_NO) then
+ list.concat(tai_regalloc.dealloc(r,nil));
end;