Browse Source

* ARM (thumb): do not save registers in routines marked as noreturn

git-svn-id: trunk@49519 -
florian 4 years ago
parent
commit
356afdd25b
1 changed files with 4 additions and 0 deletions
  1. 4 0
      compiler/arm/cgcpu.pas

+ 4 - 0
compiler/arm/cgcpu.pas

@@ -3773,6 +3773,10 @@ unit cgcpu;
               end;
               end;
 
 
             registerarea:=0;
             registerarea:=0;
+            { do not save integer registers if the procedure does not return }
+            if po_noreturn in current_procinfo.procdef.procoptions then
+              regs:=[];
+
             if regs<>[] then
             if regs<>[] then
                begin
                begin
                  for r:=RS_R0 to RS_R15 do
                  for r:=RS_R0 to RS_R15 do