Browse Source

* remove obsolete pass2inline code

git-svn-id: trunk@1198 -
peter 20 years ago
parent
commit
a720145fd1
4 changed files with 42 additions and 509 deletions
  1. 4 95
      compiler/ncal.pas
  2. 38 271
      compiler/ncgcal.pas
  3. 0 137
      compiler/ncgutil.pas
  4. 0 6
      compiler/nutils.pas

+ 4 - 95
compiler/ncal.pas

@@ -86,10 +86,6 @@ interface
           methodpointerinit,
           methodpointerinit,
           methodpointerdone : tblocknode;
           methodpointerdone : tblocknode;
           methodpointer  : tnode;
           methodpointer  : tnode;
-{$ifdef PASS2INLINE}
-          { inline function body }
-          inlinecode : tnode;
-{$endif PASS2INLINE}
           { varargs parasyms }
           { varargs parasyms }
           varargsparas : tvarargsparalist;
           varargsparas : tvarargsparalist;
           { node that specifies where the result should be put for calls }
           { node that specifies where the result should be put for calls }
@@ -751,9 +747,6 @@ type
          methodpointerdone:=nil;
          methodpointerdone:=nil;
          procdefinition:=nil;
          procdefinition:=nil;
          _funcretnode:=nil;
          _funcretnode:=nil;
-{$ifdef PASS2INLINE}
-         inlinecode:=nil;
-{$endif PASS2INLINE}
          paralength:=-1;
          paralength:=-1;
          varargsparas:=nil;
          varargsparas:=nil;
       end;
       end;
@@ -770,9 +763,6 @@ type
          procdefinition:=nil;
          procdefinition:=nil;
          callnodeflags:=[cnf_return_value_used];
          callnodeflags:=[cnf_return_value_used];
          _funcretnode:=nil;
          _funcretnode:=nil;
-{$ifdef PASS2INLINE}
-         inlinecode:=nil;
-{$endif PASS2INLINE}
          paralength:=-1;
          paralength:=-1;
          varargsparas:=nil;
          varargsparas:=nil;
       end;
       end;
@@ -866,9 +856,6 @@ type
          methodpointerinit.free;
          methodpointerinit.free;
          methodpointerdone.free;
          methodpointerdone.free;
          _funcretnode.free;
          _funcretnode.free;
-{$ifdef PASS2INLINE}
-         inlinecode.free;
-{$endif PASS2INLINE}
          if assigned(varargsparas) then
          if assigned(varargsparas) then
            begin
            begin
              for i:=0 to varargsparas.count-1 do
              for i:=0 to varargsparas.count-1 do
@@ -893,9 +880,6 @@ type
         methodpointerinit:=tblocknode(ppuloadnode(ppufile));
         methodpointerinit:=tblocknode(ppuloadnode(ppufile));
         methodpointerdone:=tblocknode(ppuloadnode(ppufile));
         methodpointerdone:=tblocknode(ppuloadnode(ppufile));
         _funcretnode:=ppuloadnode(ppufile);
         _funcretnode:=ppuloadnode(ppufile);
-{$ifdef PASS2INLINE}
-        inlinecode:=ppuloadnode(ppufile);
-{$endif PASS2INLINE}
       end;
       end;
 
 
 
 
@@ -909,9 +893,6 @@ type
         ppuwritenode(ppufile,methodpointerinit);
         ppuwritenode(ppufile,methodpointerinit);
         ppuwritenode(ppufile,methodpointerdone);
         ppuwritenode(ppufile,methodpointerdone);
         ppuwritenode(ppufile,_funcretnode);
         ppuwritenode(ppufile,_funcretnode);
-{$ifdef PASS2INLINE}
-        ppuwritenode(ppufile,inlinecode);
-{$endif PASS2INLINE}
       end;
       end;
 
 
 
 
@@ -928,10 +909,6 @@ type
           methodpointerdone.buildderefimpl;
           methodpointerdone.buildderefimpl;
         if assigned(_funcretnode) then
         if assigned(_funcretnode) then
           _funcretnode.buildderefimpl;
           _funcretnode.buildderefimpl;
-{$ifdef PASS2INLINE}
-        if assigned(inlinecode) then
-          inlinecode.buildderefimpl;
-{$endif PASS2INLINE}
       end;
       end;
 
 
 
 
@@ -953,10 +930,6 @@ type
           methodpointerdone.derefimpl;
           methodpointerdone.derefimpl;
         if assigned(_funcretnode) then
         if assigned(_funcretnode) then
           _funcretnode.derefimpl;
           _funcretnode.derefimpl;
-{$ifdef PASS2INLINE}
-        if assigned(inlinecode) then
-          inlinecode.derefimpl;
-{$endif PASS2INLINE}
         { Connect parasyms }
         { Connect parasyms }
         pt:=tcallparanode(left);
         pt:=tcallparanode(left);
         while assigned(pt) and
         while assigned(pt) and
@@ -1015,12 +988,7 @@ type
          n._funcretnode:=_funcretnode._getcopy
          n._funcretnode:=_funcretnode._getcopy
         else
         else
          n._funcretnode:=nil;
          n._funcretnode:=nil;
-{$ifdef PASS2INLINE}
-        if assigned(inlinecode) then
-         n.inlinecode:=inlinecode._getcopy
-        else
-         n.inlinecode:=nil;
-{$endif PASS2INLINE}
+
         if assigned(varargsparas) then
         if assigned(varargsparas) then
          begin
          begin
            n.varargsparas:=tvarargsparalist.create;
            n.varargsparas:=tvarargsparalist.create;
@@ -2317,53 +2285,10 @@ type
 
 
          { procedure variable ? }
          { procedure variable ? }
          if assigned(right) then
          if assigned(right) then
-           begin
-              firstpass(right);
+           firstpass(right);
 
 
-              { procedure does a call }
-              if not (block_type in [bt_const,bt_type]) then
-                include(current_procinfo.flags,pi_do_call);
-           end
-         else
-         { not a procedure variable }
-           begin
-              if procdefinition.deftype<>procdef then
-                internalerror(200411071);
-{$ifdef PASS2INLINE}
-              { calc the correture value for the register }
-              { handle predefined procedures }
-              if (po_inline in procdefinition.procoptions) then
-                begin
-                   { inherit flags }
-                   current_procinfo.flags := current_procinfo.flags + (tprocdef(procdefinition).inlininginfo^.flags*inherited_inlining_flags);
-
-                   if assigned(methodpointer) then
-                     CGMessage(cg_e_unable_inline_object_methods);
-                   if assigned(right) then
-                     CGMessage(cg_e_unable_inline_procvar);
-                   if not assigned(inlinecode) then
-                     begin
-                       if assigned(tprocdef(procdefinition).inlininginfo^.code) then
-                         inlinecode:=tprocdef(procdefinition).inlininginfo^.code.getcopy
-                       else
-                         CGMessage(cg_e_no_code_for_inline_stored);
-                       if assigned(inlinecode) then
-                         begin
-                           { consider it has not inlined if called
-                             again inside the args }
-                           procdefinition.proccalloption:=pocall_default;
-                           firstpass(inlinecode);
-                         end;
-                     end;
-                end
-              else
-{$endif PASS2INLINE}
-                begin
-                  if not (block_type in [bt_const,bt_type]) then
-                    include(current_procinfo.flags,pi_do_call);
-                end;
-
-           end;
+         if not (block_type in [bt_const,bt_type]) then
+           include(current_procinfo.flags,pi_do_call);
 
 
          { implicit finally needed ? }
          { implicit finally needed ? }
          if resulttype.def.needs_inittable and
          if resulttype.def.needs_inittable and
@@ -2466,18 +2391,6 @@ type
                end;
                end;
            end;
            end;
 
 
-{$ifdef PASS2INLINE}
-         { determine the registers of the procedure variable }
-         { is this OK for inlined procs also ?? (PM)     }
-         if assigned(inlinecode) then
-           begin
-              registersfpu:=max(inlinecode.registersfpu,registersfpu);
-              registersint:=max(inlinecode.registersint,registersint);
-  {$ifdef SUPPORT_MMX}
-              registersmmx:=max(inlinecode.registersmmx,registersmmx);
-  {$endif SUPPORT_MMX}
-           end;
-{$endif PASS2INLINE}
          { determine the registers of the procedure variable }
          { determine the registers of the procedure variable }
          { is this OK for inlined procs also ?? (PM)     }
          { is this OK for inlined procs also ?? (PM)     }
          if assigned(right) then
          if assigned(right) then
@@ -2497,10 +2410,6 @@ type
               registersmmx:=max(left.registersmmx,registersmmx);
               registersmmx:=max(left.registersmmx,registersmmx);
 {$endif SUPPORT_MMX}
 {$endif SUPPORT_MMX}
            end;
            end;
-{$ifdef PASS2INLINE}
-         if assigned(inlinecode) then
-           include(procdefinition.procoptions,po_inline);
-{$endif PASS2INLINE}
       end;
       end;
 
 
 {$ifdef state_tracking}
 {$ifdef state_tracking}

+ 38 - 271
compiler/ncgcal.pas

@@ -46,10 +46,6 @@ interface
        tcgcallnode = class(tcallnode)
        tcgcallnode = class(tcallnode)
        private
        private
           procedure release_para_temps;
           procedure release_para_temps;
-          procedure normal_pass_2;
-{$ifdef PASS2INLINE}
-          procedure inlined_pass_2;
-{$endif PASS2INLINE}
           procedure pushparas;
           procedure pushparas;
           procedure freeparas;
           procedure freeparas;
        protected
        protected
@@ -81,10 +77,6 @@ implementation
       systems,
       systems,
       cutils,verbose,globals,
       cutils,verbose,globals,
       symconst,symtable,defutil,paramgr,
       symconst,symtable,defutil,paramgr,
-{$ifdef GDB}
-      strings,
-      gdb,
-{$endif GDB}
       cgbase,pass_2,
       cgbase,pass_2,
       aasmbase,aasmtai,
       aasmbase,aasmtai,
       nbas,nmem,nld,ncnv,nutils,
       nbas,nmem,nld,ncnv,nutils,
@@ -337,12 +329,7 @@ implementation
                  cg.g_decrrefcount(exprasmlist,left.resulttype.def,href);
                  cg.g_decrrefcount(exprasmlist,left.resulttype.def,href);
                end;
                end;
 
 
-{$ifdef PASS2INLINE}
-             if assigned(aktcallnode.inlinecode) then
-               paramanager.duplicateparaloc(exprasmlist,aktcallnode.procdefinition.proccalloption,parasym,tempcgpara)
-             else
-{$endif PASS2INLINE}
-               paramanager.createtempparaloc(exprasmlist,aktcallnode.procdefinition.proccalloption,parasym,tempcgpara);
+             paramanager.createtempparaloc(exprasmlist,aktcallnode.procdefinition.proccalloption,parasym,tempcgpara);
 
 
              { handle varargs first, because parasym is not valid }
              { handle varargs first, because parasym is not valid }
              if (cpf_varargs_para in callparaflags) then
              if (cpf_varargs_para in callparaflags) then
@@ -675,10 +662,7 @@ implementation
                  { better check for the real location of the parameter here, when stack passed parameters
                  { better check for the real location of the parameter here, when stack passed parameters
                    are saved temporary in registers, checking for the tmpparaloc.loc is wrong
                    are saved temporary in registers, checking for the tmpparaloc.loc is wrong
                  }
                  }
-{$ifdef PASS2INLINE}
-                 if not assigned(inlinecode) then
-{$endif PASS2INLINE}
-                   paramanager.freeparaloc(exprasmlist,ppn.tempcgpara);
+                 paramanager.freeparaloc(exprasmlist,ppn.tempcgpara);
                  tmpparaloc:=ppn.tempcgpara.location;
                  tmpparaloc:=ppn.tempcgpara.location;
                  sizeleft:=ppn.tempcgpara.intsize;
                  sizeleft:=ppn.tempcgpara.intsize;
                  callerparaloc:=ppn.parasym.paraloc[callerside].location;
                  callerparaloc:=ppn.parasym.paraloc[callerside].location;
@@ -718,42 +702,37 @@ implementation
                          end;
                          end;
                        LOC_REFERENCE:
                        LOC_REFERENCE:
                          begin
                          begin
-{$ifdef PASS2INLINE}
-                           if not assigned(inlinecode) then
-{$endif PASS2INLINE}
-                             begin
 {$ifdef cputargethasfixedstack}
 {$ifdef cputargethasfixedstack}
-                               { Can't have a data copied to the stack, every location
-                                 must contain a valid size field }
-
-                               if (ppn.tempcgpara.size=OS_NO) and
-                                  ((tmpparaloc^.loc<>LOC_REFERENCE) or
-                                   assigned(tmpparaloc^.next)) then
-                                 internalerror(200501281);
-                               reference_reset_base(href,callerparaloc^.reference.index,callerparaloc^.reference.offset);
-                               { copy parameters in case they were moved to a temp. location because we've a fixed stack }
-                               case tmpparaloc^.loc of
-                                 LOC_REFERENCE:
-                                   begin
-                                     reference_reset_base(htempref,tmpparaloc^.reference.index,tmpparaloc^.reference.offset);
-                                     { use concatcopy, because it can also be a float which fails when
-                                       load_ref_ref is used }
-                                     if (ppn.tempcgpara.size <> OS_NO) then
-                                       cg.g_concatcopy(exprasmlist,htempref,href,tcgsize2size[tmpparaloc^.size])
-                                      else
-                                       cg.g_concatcopy(exprasmlist,htempref,href,sizeleft)
-                                   end;
-                                 LOC_REGISTER:
-                                   cg.a_load_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.size,tmpparaloc^.register,href);
-                                 LOC_FPUREGISTER:
-                                   cg.a_loadfpu_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.register,href);
-                                 LOC_MMREGISTER:
-                                   cg.a_loadmm_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.size,tmpparaloc^.register,href,mms_movescalar);
-                                 else
-                                   internalerror(200402081);
-                               end;
+                            { Can't have a data copied to the stack, every location
+                              must contain a valid size field }
+
+                            if (ppn.tempcgpara.size=OS_NO) and
+                              ((tmpparaloc^.loc<>LOC_REFERENCE) or
+                                assigned(tmpparaloc^.next)) then
+                              internalerror(200501281);
+                            reference_reset_base(href,callerparaloc^.reference.index,callerparaloc^.reference.offset);
+                            { copy parameters in case they were moved to a temp. location because we've a fixed stack }
+                            case tmpparaloc^.loc of
+                              LOC_REFERENCE:
+                                begin
+                                  reference_reset_base(htempref,tmpparaloc^.reference.index,tmpparaloc^.reference.offset);
+                                  { use concatcopy, because it can also be a float which fails when
+                                    load_ref_ref is used }
+                                  if (ppn.tempcgpara.size <> OS_NO) then
+                                    cg.g_concatcopy(exprasmlist,htempref,href,tcgsize2size[tmpparaloc^.size])
+                                  else
+                                    cg.g_concatcopy(exprasmlist,htempref,href,sizeleft)
+                                end;
+                              LOC_REGISTER:
+                                cg.a_load_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.size,tmpparaloc^.register,href);
+                              LOC_FPUREGISTER:
+                                cg.a_loadfpu_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.register,href);
+                              LOC_MMREGISTER:
+                                cg.a_loadmm_reg_ref(exprasmlist,tmpparaloc^.size,tmpparaloc^.size,tmpparaloc^.register,href,mms_movescalar);
+                              else
+                                internalerror(200402081);
+                           end;
 {$endif cputargethasfixedstack}
 {$endif cputargethasfixedstack}
-                             end;
                          end;
                          end;
                      end;
                      end;
                      dec(sizeleft,tcgsize2size[tmpparaloc^.size]);
                      dec(sizeleft,tcgsize2size[tmpparaloc^.size]);
@@ -776,11 +755,7 @@ implementation
            begin
            begin
              if (ppn.left.nodetype<>nothingn) then
              if (ppn.left.nodetype<>nothingn) then
                begin
                begin
-                 if
-{$ifdef PASS2INLINE}
-                    not assigned(inlinecode) or
-{$endif PASS2INLINE}
-                    (ppn.parasym.paraloc[callerside].location^.loc <> LOC_REFERENCE) then
+                 if (ppn.parasym.paraloc[callerside].location^.loc <> LOC_REFERENCE) then
                    paramanager.freeparaloc(exprasmlist,ppn.parasym.paraloc[callerside]);
                    paramanager.freeparaloc(exprasmlist,ppn.parasym.paraloc[callerside]);
                end;
                end;
              ppn:=tcgcallparanode(ppn.right);
              ppn:=tcgcallparanode(ppn.right);
@@ -789,7 +764,7 @@ implementation
 
 
 
 
 
 
-    procedure tcgcallnode.normal_pass_2;
+    procedure tcgcallnode.pass_2;
       var
       var
          regs_to_save_int,
          regs_to_save_int,
          regs_to_save_fpu,
          regs_to_save_fpu,
@@ -804,6 +779,9 @@ implementation
             not procdefinition.has_paraloc_info then
             not procdefinition.has_paraloc_info then
            internalerror(200305264);
            internalerror(200305264);
 
 
+         if assigned(methodpointerinit) then
+           secondpass(methodpointerinit);
+
          if resulttype.def.needs_inittable and
          if resulttype.def.needs_inittable and
             not paramanager.ret_in_param(resulttype.def,procdefinition.proccalloption) and
             not paramanager.ret_in_param(resulttype.def,procdefinition.proccalloption) and
             not assigned(funcretnode) then
             not assigned(funcretnode) then
@@ -1039,221 +1017,10 @@ implementation
 
 
          { release temps of paras }
          { release temps of paras }
          release_para_temps;
          release_para_temps;
-      end;
-
-
-{$ifdef PASS2INLINE}
-    procedure tcgcallnode.inlined_pass_2;
-      var
-         oldaktcallnode : tcallnode;
-         oldprocinfo : tprocinfo;
-         oldinlining_procedure : boolean;
-         inlineentrycode,inlineexitcode : TAAsmoutput;
-{$ifdef GDB}
-         startlabel,endlabel : tasmlabel;
-         pp : pchar;
-         mangled_length  : longint;
-{$endif GDB}
-      begin
-         if not(assigned(procdefinition) and (procdefinition.deftype=procdef)) then
-           internalerror(200305262);
-
-         oldinlining_procedure:=inlining_procedure;
-         oldprocinfo:=current_procinfo;
-         { we're inlining a procedure }
-         inlining_procedure:=true;
-
-         { Add inling start }
-{$ifdef GDB}
-         exprasmlist.concat(Tai_force_line.Create);
-{$endif GDB}
-         exprasmList.concat(Tai_Marker.Create(InlineStart));
-{$ifdef extdebug}
-         exprasmList.concat(tai_comment.Create(strpnew('Start of inlined proc '+tprocdef(procdefinition).procsym.name)));
-{$endif extdebug}
-
-         { calculate registers to pass the parameters }
-         paramanager.create_inline_paraloc_info(procdefinition);
-
-         { Allocate parameters and locals }
-         gen_alloc_inline_parast(exprasmlist,tprocdef(procdefinition));
-         gen_alloc_inline_funcret(exprasmlist,tprocdef(procdefinition));
-         gen_alloc_symtable(exprasmlist,tprocdef(procdefinition).localst);
-
-         { if we allocate the temp. location for ansi- or widestrings }
-         { already here, we avoid later a push/pop                    }
-         if resulttype.def.needs_inittable and
-            not paramanager.ret_in_param(resulttype.def,procdefinition.proccalloption) then
-           begin
-             tg.gettemptyped(exprasmlist,resulttype.def,tt_normal,refcountedtemp);
-             cg.g_decrrefcount(exprasmlist,resulttype.def,refcountedtemp);
-           end;
-
-         { Push parameters, still use the old current_procinfo. This
-           is required that have the correct information available like
-           _class and nested procedure }
-         oldaktcallnode:=aktcallnode;
-         aktcallnode:=self;
-         if assigned(left) then
-           begin
-             tcallparanode(left).secondcallparan;
-             pushparas;
-           end;
-         aktcallnode:=oldaktcallnode;
-
-         { create temp procinfo that will be used for the inlinecode tree }
-         current_procinfo:=cprocinfo.create(nil);
-         current_procinfo.procdef:=tprocdef(procdefinition);
-         current_procinfo.flags:=oldprocinfo.flags;
-         current_procinfo.aktlocaldata.destroy;
-         current_procinfo.aktlocaldata:=oldprocinfo.aktlocaldata;
-
-         { when the oldprocinfo is also being inlined reuse the
-           inlining_procinfo }
-         if assigned(oldprocinfo.inlining_procinfo) then
-           current_procinfo.inlining_procinfo:=oldprocinfo.inlining_procinfo
-         else
-           current_procinfo.inlining_procinfo:=oldprocinfo;
-
-         { takes care of local data initialization }
-         inlineentrycode:=TAAsmoutput.Create;
-         inlineexitcode:=TAAsmoutput.Create;
-
-{$ifdef GDB}
-         if (cs_debuginfo in aktmoduleswitches) and
-            not(cs_gdb_valgrind in aktglobalswitches) then
-           begin
-             objectlibrary.getaddrlabel(startlabel);
-             objectlibrary.getaddrlabel(endlabel);
-             cg.a_label(exprasmlist,startlabel);
-
-             { Here we must include the para and local symtable info }
-             procdefinition.concatstabto(al_withdebug);
-
-             mangled_length:=length(current_procinfo.inlining_procinfo.procdef.mangledname);
-             getmem(pp,mangled_length+50);
-             strpcopy(pp,'192,0,0,'+startlabel.name);
-             if (target_info.use_function_relative_addresses) then
-               begin
-                 strpcopy(strend(pp),'-');
-                 strpcopy(strend(pp),current_procinfo.inlining_procinfo.procdef.mangledname);
-               end;
-             al_withdebug.concat(Tai_stabn.Create(strnew(pp)));
-           end;
-{$endif GDB}
-
-         gen_load_para_value(inlineentrycode);
-         { now that we've loaded the para's, free them }
-         if assigned(left) then
-           freeparas;
-         gen_initialize_code(inlineentrycode);
-         if po_assembler in current_procinfo.procdef.procoptions then
-           inlineentrycode.insert(Tai_marker.Create(asmblockstart));
-         exprasmList.concatlist(inlineentrycode);
-
-         { process the inline code }
-         secondpass(inlinecode);
-
-         cg.a_label(exprasmlist,current_procinfo.aktexitlabel);
-         gen_finalize_code(inlineexitcode);
-         gen_load_return_value(inlineexitcode);
-         if po_assembler in current_procinfo.procdef.procoptions then
-           inlineexitcode.concat(Tai_marker.Create(asmblockend));
-         exprasmlist.concatlist(inlineexitcode);
-
-         inlineentrycode.free;
-         inlineexitcode.free;
-{$ifdef extdebug}
-         exprasmList.concat(tai_comment.Create(strpnew('End of inlined proc')));
-{$endif extdebug}
-         exprasmList.concat(Tai_Marker.Create(InlineEnd));
-
-         { handle function results }
-         if (not is_void(resulttype.def)) then
-           handle_return_value
-         else
-           location_reset(location,LOC_VOID,OS_NO);
 
 
-         { perhaps i/o check ? }
-         if (cs_check_io in aktlocalswitches) and
-            (po_iocheck in procdefinition.procoptions) and
-            not(po_iocheck in current_procinfo.procdef.procoptions) and
-            { no IO check for methods and procedure variables }
-            (right=nil) and
-            not(po_virtualmethod in procdefinition.procoptions) then
-           begin
-              cg.allocallcpuregisters(exprasmlist);
-              cg.a_call_name(exprasmlist,'FPC_IOCHECK');
-              cg.deallocallcpuregisters(exprasmlist);
-           end;
-
-         { release temps of paras }
-         release_para_temps;
-
-         { if return value is not used }
-         if (not is_void(resulttype.def)) and
-            (not(cnf_return_value_used in callnodeflags)) then
-           begin
-              if location.loc in [LOC_CREFERENCE,LOC_REFERENCE] then
-                begin
-                   { data which must be finalized ? }
-                   if (resulttype.def.needs_inittable) then
-                      cg.g_finalize(exprasmlist,resulttype.def,location.reference);
-                   { release unused temp }
-                   tg.ungetiftemp(exprasmlist,location.reference)
-                end
-              else if location.loc=LOC_FPUREGISTER then
-                begin
-{$ifdef x86}
-                  { release FPU stack }
-                  emit_reg(A_FSTP,S_NO,NR_FPU_RESULT_REG);
-{$endif x86}
-                end;
-           end;
-
-         { Release parameters and locals }
-         gen_free_symtable(exprasmlist,tparasymtable(current_procinfo.procdef.parast));
-         gen_free_symtable(exprasmlist,tlocalsymtable(current_procinfo.procdef.localst));
-
-{$ifdef GDB}
-         if (cs_debuginfo in aktmoduleswitches) and
-            not(cs_gdb_valgrind in aktglobalswitches) then
-           begin
-             cg.a_label(exprasmlist,endlabel);
-             strpcopy(pp,'224,0,0,'+endlabel.name);
-             if (target_info.use_function_relative_addresses) then
-               begin
-                 strpcopy(strend(pp),'-');
-                 strpcopy(strend(pp),current_procinfo.inlining_procinfo.procdef.mangledname);
-               end;
-             al_withdebug.concat(Tai_stabn.Create(strnew(pp)));
-             freemem(pp,mangled_length+50);
-           end;
-{$endif GDB}
-
-         { restore }
-         current_procinfo.aktlocaldata:=nil;
-         current_procinfo.destroy;
-         current_procinfo:=oldprocinfo;
-         inlining_procedure:=oldinlining_procedure;
-      end;
-{$endif PASS2INLINE}
-
-
-    procedure tcgcallnode.pass_2;
-      begin
-        if assigned(methodpointerinit) then
-          secondpass(methodpointerinit);
-
-{$ifdef PASS2INLINE}
-        if assigned(inlinecode) then
-          inlined_pass_2
-        else
-{$endif PASS2INLINE}
-          normal_pass_2;
 
 
-        if assigned(methodpointerdone) then
-          secondpass(methodpointerdone);
+         if assigned(methodpointerdone) then
+           secondpass(methodpointerdone);
       end;
       end;
 
 
 
 

+ 0 - 137
compiler/ncgutil.pas

@@ -108,10 +108,6 @@ interface
 
 
     procedure gen_alloc_symtable(list:TAAsmoutput;st:tsymtable);
     procedure gen_alloc_symtable(list:TAAsmoutput;st:tsymtable);
     procedure gen_free_symtable(list:TAAsmoutput;st:tsymtable);
     procedure gen_free_symtable(list:TAAsmoutput;st:tsymtable);
-{$ifdef PASS2INLINE}
-    procedure gen_alloc_inline_parast(list:TAAsmoutput;pd:tprocdef);
-    procedure gen_alloc_inline_funcret(list:TAAsmoutput;pd:tprocdef);
-{$endif PASS2INLINE}
 
 
     { rtti and init/final }
     { rtti and init/final }
     procedure generate_rtti(p:Ttypesym);
     procedure generate_rtti(p:Ttypesym);
@@ -2144,139 +2140,6 @@ implementation
       end;
       end;
 
 
 
 
-{$ifdef PASS2INLINE}
-    procedure gen_alloc_inline_parast(list:TAAsmoutput;pd:tprocdef);
-      var
-        sym : tsym;
-        calleeparaloc,
-        callerparaloc : pcgparalocation;
-      begin
-        if (po_assembler in pd.procoptions) then
-          exit;
-        sym:=tsym(pd.parast.symindex.first);
-        while assigned(sym) do
-          begin
-            if sym.typ=paravarsym then
-              begin
-                with tparavarsym(sym) do
-                  begin
-                    { for localloc <> LOC_REFERENCE, we need regvar support inside inlined procedures }
-                    localloc.loc:=LOC_REFERENCE;
-                    localloc.size:=int_cgsize(paramanager.push_size(varspez,vartype.def,pd.proccalloption));
-                    tg.GetLocal(list,tcgsize2size[localloc.size],vartype.def,localloc.reference);
-                    calleeparaloc:=paraloc[calleeside].location;
-                    callerparaloc:=paraloc[callerside].location;
-                    while assigned(calleeparaloc) do
-                      begin
-                        if not assigned(callerparaloc) then
-                          internalerror(200408281);
-                        if calleeparaloc^.loc<>callerparaloc^.loc then
-                          internalerror(200408282);
-                        case calleeparaloc^.loc of
-                          LOC_FPUREGISTER:
-                            begin
-                              calleeparaloc^.register:=cg.getfpuregister(list,calleeparaloc^.size);
-                              callerparaloc^.register:=calleeparaloc^.register;
-                            end;
-                          LOC_REGISTER:
-                            begin
-                              calleeparaloc^.register:=cg.getintregister(list,calleeparaloc^.size);
-                              callerparaloc^.register:=calleeparaloc^.register;
-                            end;
-                          LOC_MMREGISTER:
-                            begin
-                              calleeparaloc^.register:=cg.getmmregister(list,calleeparaloc^.size);
-                              callerparaloc^.register:=calleeparaloc^.register;
-                            end;
-                          LOC_REFERENCE:
-                            begin
-                              calleeparaloc^.reference.offset := localloc.reference.offset;
-                              calleeparaloc^.reference.index := localloc.reference.base;
-                              callerparaloc^.reference.offset := localloc.reference.offset;
-                              callerparaloc^.reference.index := localloc.reference.base;
-                            end;
-                        end;
-                        calleeparaloc:=calleeparaloc^.next;
-                        callerparaloc:=callerparaloc^.next;
-                      end;
-                    if cs_asm_source in aktglobalswitches then
-                      begin
-                        case localloc.loc of
-                          LOC_REFERENCE :
-                            list.concat(Tai_comment.Create(strpnew('Para '+realname+' allocated at '+
-                                std_regname(localloc.reference.base)+tostr_with_plus(localloc.reference.offset))));
-                        end;
-                      end;
-                  end;
-              end;
-            sym:=tsym(sym.indexnext);
-          end;
-      end;
-
-
-    procedure gen_alloc_inline_funcret(list:TAAsmoutput;pd:tprocdef);
-      var
-        callerparaloc : tlocation;
-      begin
-        if not assigned(pd.funcretsym) or
-           (po_assembler in pd.procoptions) then
-          exit;
-        { for localloc <> LOC_REFERENCE, we need regvar support inside inlined procedures }
-        with tabstractnormalvarsym(pd.funcretsym) do
-          begin
-            localloc.loc:=LOC_REFERENCE;
-            localloc.size:=int_cgsize(paramanager.push_size(varspez,vartype.def,pd.proccalloption));
-            tg.GetLocal(list,tcgsize2size[localloc.size],vartype.def,localloc.reference);
-            callerparaloc:=pd.funcretloc[callerside];
-            case pd.funcretloc[calleeside].loc of
-              LOC_FPUREGISTER:
-                begin
-                  pd.funcretloc[calleeside].register:=cg.getfpuregister(list,pd.funcretloc[calleeside].size);
-                  pd.funcretloc[callerside].register:=pd.funcretloc[calleeside].register;
-                end;
-              LOC_REGISTER:
-                begin
-  {$ifndef cpu64bit}
-                  if callerparaloc.size in [OS_64,OS_S64] then
-                    begin
-                    end
-                  else
-  {$endif cpu64bit}
-                    begin
-                      pd.funcretloc[calleeside].register:=cg.getintregister(list,pd.funcretloc[calleeside].size);
-                      pd.funcretloc[callerside].register:=pd.funcretloc[calleeside].register;
-                    end;
-                end;
-              LOC_MMREGISTER:
-                begin
-                  pd.funcretloc[calleeside].register:=cg.getmmregister(list,pd.funcretloc[calleeside].size);
-                  pd.funcretloc[callerside].register:=pd.funcretloc[calleeside].register;
-                end;
-              LOC_REFERENCE:
-                begin
-                  pd.funcretloc[calleeside].reference.offset := localloc.reference.offset;
-                  pd.funcretloc[calleeside].reference.index := localloc.reference.base;
-                  pd.funcretloc[callerside].reference.offset := localloc.reference.offset;
-                  pd.funcretloc[callerside].reference.index := localloc.reference.base;
-                end;
-              LOC_VOID:
-                ;
-              else
-                internalerror(200411191);
-            end;
-            if cs_asm_source in aktglobalswitches then
-              begin
-                case localloc.loc of
-                  LOC_REFERENCE :
-                    list.concat(Tai_comment.Create(strpnew('Funcret '+realname+' allocated at '+
-                        std_regname(localloc.reference.base)+tostr_with_plus(localloc.reference.offset))));
-                end;
-              end;
-          end;
-      end;
-{$endif PASS2INLINE}
-
-
     { persistent rtti generation }
     { persistent rtti generation }
     procedure generate_rtti(p:Ttypesym);
     procedure generate_rtti(p:Ttypesym);
       var
       var

+ 0 - 6
compiler/nutils.pas

@@ -111,9 +111,6 @@ implementation
           begin
           begin
             { not in one statement, won't work because of b- }
             { not in one statement, won't work because of b- }
             result := foreachnode(tcallnode(n).methodpointer,f,arg) or result;
             result := foreachnode(tcallnode(n).methodpointer,f,arg) or result;
-{$ifdef PASS2INLINE}
-            result := foreachnode(tcallnode(n).inlinecode,f,arg) or result;
-{$endif PASS2INLINE}
           end;
           end;
         ifn, whilerepeatn, forn:
         ifn, whilerepeatn, forn:
           begin
           begin
@@ -152,9 +149,6 @@ implementation
           calln:
           calln:
             begin
             begin
               result := foreachnodestatic(procmethod,tcallnode(n).methodpointer,f,arg) or result;
               result := foreachnodestatic(procmethod,tcallnode(n).methodpointer,f,arg) or result;
-{$ifdef PASS2INLINE}
-              result := foreachnodestatic(procmethod,tcallnode(n).inlinecode,f,arg) or result;
-{$endif PASS2INLINE}
             end;
             end;
           ifn, whilerepeatn, forn:
           ifn, whilerepeatn, forn:
             begin
             begin