mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 11:24:16 +01:00 
			
		
		
		
	* fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons
git-svn-id: trunk@39750 -
This commit is contained in:
		
							parent
							
								
									15476898ca
								
							
						
					
					
						commit
						800ce23499
					
				@ -135,6 +135,22 @@ interface
 | 
			
		||||
         section_count : longint;
 | 
			
		||||
         constructor create;
 | 
			
		||||
         function  getlasttaifilepos : pfileposinfo;
 | 
			
		||||
         { inserts another List at the begin and make this List empty }
 | 
			
		||||
         procedure insertList(p : TLinkedList); override;
 | 
			
		||||
         { inserts another List before the provided item and make this List empty }
 | 
			
		||||
         procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList); override;
 | 
			
		||||
         { inserts another List after the provided item and make this List empty }
 | 
			
		||||
         procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList); override;
 | 
			
		||||
         { concats another List at the end and make this List empty }
 | 
			
		||||
         procedure concatList(p : TLinkedList); override;
 | 
			
		||||
         { concats another List at the start and makes a copy
 | 
			
		||||
           the list is ordered in reverse.
 | 
			
		||||
         }
 | 
			
		||||
         procedure insertListcopy(p : TLinkedList); override;
 | 
			
		||||
         { concats another List at the end and makes a copy }
 | 
			
		||||
         procedure concatListcopy(p : TLinkedList); override;
 | 
			
		||||
         { removes all items from the list, the items are not freed }
 | 
			
		||||
         procedure RemoveAll; override;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
      TAsmCFI=class
 | 
			
		||||
@ -338,6 +354,59 @@ implementation
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.insertList(p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited insertList(p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
        TAsmList(p).section_count:=0;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.insertListBefore(Item : TLinkedListItem; p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited insertListBefore(Item,p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
        TAsmList(p).section_count:=0;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.insertListAfter(Item : TLinkedListItem; p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited insertListAfter(Item,p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
        TAsmList(p).section_count:=0;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.concatList(p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited concatList(p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
        TAsmList(p).section_count:=0;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.insertListcopy(p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited insertListcopy(p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
     end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.concatListcopy(p : TLinkedList);
 | 
			
		||||
      begin
 | 
			
		||||
        inherited concatListcopy(p);
 | 
			
		||||
        inc(section_count,TAsmList(p).section_count);
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure TAsmList.RemoveAll;
 | 
			
		||||
      begin
 | 
			
		||||
         inherited RemoveAll;
 | 
			
		||||
         section_count:=0;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{****************************************************************************
 | 
			
		||||
                                TAsmData
 | 
			
		||||
****************************************************************************}
 | 
			
		||||
@ -424,8 +493,8 @@ implementation
 | 
			
		||||
        CurrAsmList:=TAsmList.create;
 | 
			
		||||
        for hal:=low(TAsmListType) to high(TAsmListType) do
 | 
			
		||||
          AsmLists[hal]:=TAsmList.create;
 | 
			
		||||
        WideInits :=TLinkedList.create;
 | 
			
		||||
        ResStrInits:=TLinkedList.create;
 | 
			
		||||
        WideInits :=TAsmList.create;
 | 
			
		||||
        ResStrInits:=TAsmList.create;
 | 
			
		||||
        { CFI }
 | 
			
		||||
        FAsmCFI:=CAsmCFI.Create;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
@ -365,21 +365,21 @@ type
 | 
			
		||||
          { Gets last Item }
 | 
			
		||||
          function  GetLast:TLinkedListItem;
 | 
			
		||||
          { inserts another List at the begin and make this List empty }
 | 
			
		||||
          procedure insertList(p : TLinkedList);
 | 
			
		||||
          procedure insertList(p : TLinkedList); virtual;
 | 
			
		||||
          { inserts another List before the provided item and make this List empty }
 | 
			
		||||
          procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList);
 | 
			
		||||
          procedure insertListBefore(Item:TLinkedListItem;p : TLinkedList); virtual;
 | 
			
		||||
          { inserts another List after the provided item and make this List empty }
 | 
			
		||||
          procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList);
 | 
			
		||||
          procedure insertListAfter(Item:TLinkedListItem;p : TLinkedList); virtual;
 | 
			
		||||
          { concats another List at the end and make this List empty }
 | 
			
		||||
          procedure concatList(p : TLinkedList);
 | 
			
		||||
          procedure concatList(p : TLinkedList); virtual;
 | 
			
		||||
          { concats another List at the start and makes a copy
 | 
			
		||||
            the list is ordered in reverse.
 | 
			
		||||
          }
 | 
			
		||||
          procedure insertListcopy(p : TLinkedList);
 | 
			
		||||
          procedure insertListcopy(p : TLinkedList); virtual;
 | 
			
		||||
          { concats another List at the end and makes a copy }
 | 
			
		||||
          procedure concatListcopy(p : TLinkedList);
 | 
			
		||||
          procedure concatListcopy(p : TLinkedList); virtual;
 | 
			
		||||
          { removes all items from the list, the items are not freed }
 | 
			
		||||
          procedure RemoveAll;
 | 
			
		||||
          procedure RemoveAll; virtual;
 | 
			
		||||
          property First:TLinkedListItem read FFirst;
 | 
			
		||||
          property Last:TLinkedListItem read FLast;
 | 
			
		||||
          property Count:Integer read FCount;
 | 
			
		||||
 | 
			
		||||
@ -119,7 +119,7 @@ uses
 | 
			
		||||
 | 
			
		||||
    Constructor Tresourcestrings.Create;
 | 
			
		||||
      begin
 | 
			
		||||
        List:=TLinkedList.Create;
 | 
			
		||||
        List:=TAsmList.Create;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -816,7 +816,6 @@ implementation
 | 
			
		||||
          begin
 | 
			
		||||
            n.p_asm:=TAsmList.create;
 | 
			
		||||
            n.p_asm.concatlistcopy(p_asm);
 | 
			
		||||
            n.p_asm.section_count:=p_asm.section_count;
 | 
			
		||||
          end
 | 
			
		||||
        else n.p_asm := nil;
 | 
			
		||||
        n.currenttai:=currenttai;
 | 
			
		||||
 | 
			
		||||
@ -394,9 +394,6 @@ interface
 | 
			
		||||
             current_asmdata.CurrAsmList.concatlist(p_asm);
 | 
			
		||||
           end;
 | 
			
		||||
 | 
			
		||||
         { Update section count }
 | 
			
		||||
         current_asmdata.currasmlist.section_count:=current_asmdata.currasmlist.section_count+p_asm.section_count;
 | 
			
		||||
 | 
			
		||||
         { Release register used in the assembler block }
 | 
			
		||||
         if (not has_registerlist) then
 | 
			
		||||
           cg.deallocallcpuregisters(current_asmdata.CurrAsmList);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user