mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 02:51:37 +01:00 
			
		
		
		
	* regvar fixes from Peter
This commit is contained in:
		
							parent
							
								
									0cf348b3df
								
							
						
					
					
						commit
						2b030488b2
					
				| @ -267,6 +267,10 @@ implementation | ||||
|                    { reference in nested procedures, variable needs to be in memory } | ||||
|                    make_not_regable(self); | ||||
|                  end; | ||||
|                { static variables referenced in procedures, variable needs to be in memory } | ||||
|                if (symtable.symtabletype=staticsymtable) and | ||||
|                   (symtable.symtablelevel<>current_procinfo.procdef.parast.symtablelevel) then | ||||
|                  make_not_regable(self); | ||||
|                { fix self type which is declared as voidpointer in the | ||||
|                  definition } | ||||
|                if vo_is_self in tvarsym(symtableentry).varoptions then | ||||
| @ -1141,7 +1145,10 @@ begin | ||||
| end. | ||||
| { | ||||
|   $Log$ | ||||
|   Revision 1.129  2004-09-26 17:45:30  peter | ||||
|   Revision 1.130  2004-10-06 19:26:50  jonas | ||||
|     * regvar fixes from Peter | ||||
| 
 | ||||
|   Revision 1.129  2004/09/26 17:45:30  peter | ||||
|     * simple regvar support, not yet finished | ||||
| 
 | ||||
|   Revision 1.128  2004/06/20 08:55:29  florian | ||||
|  | ||||
| @ -1375,17 +1375,12 @@ implementation | ||||
| 
 | ||||
| 
 | ||||
|     procedure tvarsym.ppuwrite(ppufile:tcompilerppufile); | ||||
|       var | ||||
|         hvo : tvaroptions; | ||||
|       begin | ||||
|          inherited writesym(ppufile); | ||||
|          ppufile.putbyte(byte(varspez)); | ||||
|          ppufile.putlongint(fieldoffset); | ||||
|          ppufile.puttype(vartype); | ||||
|          { symbols which are load are never candidates for a register, | ||||
|            turn off the regable } | ||||
|          hvo:=varoptions-[vo_regable,vo_fpuregable]; | ||||
|          ppufile.putsmallset(hvo); | ||||
|          ppufile.putsmallset(varoptions); | ||||
|          if [vo_is_C_var,vo_is_dll_var]*varoptions<>[] then | ||||
|            ppufile.putstring(_mangledname^); | ||||
|          ppufile.writeentry(ibvarsym); | ||||
| @ -2216,7 +2211,10 @@ implementation | ||||
| end. | ||||
| { | ||||
|   $Log$ | ||||
|   Revision 1.178  2004-10-01 15:22:22  peter | ||||
|   Revision 1.179  2004-10-06 19:26:50  jonas | ||||
|     * regvar fixes from Peter | ||||
| 
 | ||||
|   Revision 1.178  2004/10/01 15:22:22  peter | ||||
|     * don't add stabs for register variables | ||||
| 
 | ||||
|   Revision 1.177  2004/09/26 17:45:30  peter | ||||
|  | ||||
| @ -1632,13 +1632,17 @@ unit cgx86; | ||||
|       var | ||||
|         href : treference; | ||||
|         r : integer; | ||||
|         hreg : tregister; | ||||
|       begin | ||||
|         { Copy registers from temp } | ||||
|         href:=current_procinfo.save_regs_ref; | ||||
|         for r:=low(saved_standard_registers) to high(saved_standard_registers) do | ||||
|           if saved_standard_registers[r] in rg[R_INTREGISTER].used_in_proc then | ||||
|             begin | ||||
|               a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,newreg(R_INTREGISTER,saved_standard_registers[r],R_SUBWHOLE)); | ||||
|               hreg:=newreg(R_INTREGISTER,saved_standard_registers[r],R_SUBWHOLE); | ||||
|               { Allocate register so the optimizer does remove the load } | ||||
|               a_reg_alloc(list,hreg); | ||||
|               a_load_ref_reg(list,OS_ADDR,OS_ADDR,href,hreg); | ||||
|               inc(href.offset,sizeof(aint)); | ||||
|             end; | ||||
|         tg.UnGetTemp(list,current_procinfo.save_regs_ref); | ||||
| @ -1675,7 +1679,10 @@ unit cgx86; | ||||
| end. | ||||
| { | ||||
|   $Log$ | ||||
|   Revision 1.128  2004-10-05 20:41:02  peter | ||||
|   Revision 1.129  2004-10-06 19:27:35  jonas | ||||
|     * regvar fixes from Peter | ||||
| 
 | ||||
|   Revision 1.128  2004/10/05 20:41:02  peter | ||||
|     * more spilling rewrites | ||||
| 
 | ||||
|   Revision 1.127  2004/10/04 20:46:22  peter | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jonas Maebe
						Jonas Maebe