Jelajahi Sumber

* ignore po_interrupt for i386-darwin since it messes up stack alignment

git-svn-id: trunk@2857 -
Jonas Maebe 19 tahun lalu
induk
melakukan
e7112c6636
2 mengubah file dengan 6 tambahan dan 2 penghapusan
  1. 3 1
      compiler/i386/cgcpu.pas
  2. 3 1
      compiler/x86/cgx86.pas

+ 3 - 1
compiler/i386/cgcpu.pas

@@ -271,7 +271,9 @@ unit cgcpu;
           end;
 
         { return from proc }
-        if (po_interrupt in current_procinfo.procdef.procoptions) then
+        if (po_interrupt in current_procinfo.procdef.procoptions) and
+           { this messes up stack alignment }
+           (target_info.system <> system_i386_darwin) then
           begin
             if (current_procinfo.procdef.funcretloc[calleeside].loc<>LOC_VOID) and
                (current_procinfo.procdef.funcretloc[calleeside].loc=LOC_REGISTER) then

+ 3 - 1
compiler/x86/cgx86.pas

@@ -1862,7 +1862,9 @@ unit cgx86;
       begin
 {$ifdef i386}
         { interrupt support for i386 }
-        if (po_interrupt in current_procinfo.procdef.procoptions) then
+        if (po_interrupt in current_procinfo.procdef.procoptions) and
+           { this messes up stack alignment }
+           (target_info.system <> system_i386_darwin) then
           begin
             { .... also the segment registers }
             list.concat(Taicpu.Op_reg(A_PUSH,S_W,NR_GS));