Kaynağa Gözat

* set calling convention before assembler block is parsed

peter 22 yıl önce
ebeveyn
işleme
5fb06316f1
1 değiştirilmiş dosya ile 12 ekleme ve 10 silme
  1. 12 10
      compiler/pstatmnt.pas

+ 12 - 10
compiler/pstatmnt.pas

@@ -45,7 +45,7 @@ implementation
        globtype,globals,verbose,
        globtype,globals,verbose,
        systems,cpuinfo,
        systems,cpuinfo,
        { aasm }
        { aasm }
-       cpubase,aasmbase,aasmtai,aasmcpu,
+       cpubase,aasmbase,aasmtai,
        { symtable }
        { symtable }
        symconst,symbase,symtype,symdef,symsym,symtable,defutil,defcmp,
        symconst,symbase,symtype,symdef,symsym,symtable,defutil,defcmp,
        paramgr,
        paramgr,
@@ -56,8 +56,7 @@ implementation
        scanner,
        scanner,
        pbase,pexpr,
        pbase,pexpr,
        { codegen }
        { codegen }
-       procinfo,tgobj,rgobj,cgbase
-       ,ncgutil
+       procinfo,rgobj,cgbase
        ,radirect
        ,radirect
 {$ifdef i386}
 {$ifdef i386}
   {$ifndef NoRa386Int}
   {$ifndef NoRa386Int}
@@ -1067,12 +1066,6 @@ implementation
          if not is_void(current_procinfo.procdef.rettype.def) then
          if not is_void(current_procinfo.procdef.rettype.def) then
            symtablestack.rename(current_procinfo.procdef.resultname,'$hiddenresult');
            symtablestack.rename(current_procinfo.procdef.resultname,'$hiddenresult');
 
 
-         { force the asm statement }
-         if token<>_ASM then
-           consume(_ASM);
-         include(current_procinfo.flags,pi_is_assembler);
-         p:=_asm_statement;
-
          { assembler routines use stdcall instead of register }
          { assembler routines use stdcall instead of register }
 {$warning Temporary hack for force stdcall for assembler}
 {$warning Temporary hack for force stdcall for assembler}
          if (po_assembler in current_procinfo.procdef.procoptions) and
          if (po_assembler in current_procinfo.procdef.procoptions) and
@@ -1085,6 +1078,12 @@ implementation
             not(po_hascallingconvention in current_procinfo.procdef.procoptions) then
             not(po_hascallingconvention in current_procinfo.procdef.procoptions) then
            current_procinfo.procdef.proccalloption:=pocall_register;
            current_procinfo.procdef.proccalloption:=pocall_register;
 
 
+         { force the asm statement }
+         if token<>_ASM then
+           consume(_ASM);
+         include(current_procinfo.flags,pi_is_assembler);
+         p:=_asm_statement;
+
 {$ifndef sparc}
 {$ifndef sparc}
          if (po_assembler in current_procinfo.procdef.procoptions) then
          if (po_assembler in current_procinfo.procdef.procoptions) then
            begin
            begin
@@ -1129,7 +1128,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.112  2003-10-02 21:15:59  peter
+  Revision 1.113  2003-10-07 20:06:37  peter
+    * set calling convention before assembler block is parsed
+
+  Revision 1.112  2003/10/02 21:15:59  peter
     * delphi mode uses register calling by default for assembler
     * delphi mode uses register calling by default for assembler
 
 
   Revision 1.111  2003/10/01 20:34:49  peter
   Revision 1.111  2003/10/01 20:34:49  peter