yury 
							
						 
					 
					
						
						
						
						
							
						
						
							5771073e0b 
							
						 
					 
					
						
						
							
							* Fixed general peephole optimization of conditional jumps after r30446. It has been broken, since r30446 had added some IsJumpToLabel() checks, which tests for unconditional jump, but the optimization code expects also conditional jumps.  
						
						... 
						
						
						
						- Renamed IsJumpToLabel() to IsJumpToLabelUncond() to avoid confusions.
  - Added IsJumpToLabel() to check for any jump to a label.
  - Added comments.
git-svn-id: trunk@32114 - 
						
					 
					
						2015-10-21 15:35:54 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							11a9ff4a43 
							
						 
					 
					
						
						
							
							* Removed unused vars for mipsel compiler.  
						
						... 
						
						
						
						git-svn-id: trunk@31745 - 
						
					 
					
						2015-09-17 15:46:30 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							432248cbf1 
							
						 
					 
					
						
						
							
							* Removed lot of unused vars.  
						
						... 
						
						
						
						git-svn-id: trunk@31732 - 
						
					 
					
						2015-09-17 12:48:58 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							8c8657e2d5 
							
						 
					 
					
						
						
							
							* base optimiser support for the JVM target  
						
						... 
						
						
						
						o jump threading only works for unconditional branches until now,
     as conditional ones have limited offsets
git-svn-id: trunk@31448 - 
						
					 
					
						2015-08-29 10:08:19 +00:00 
						 
				 
			
				
					
						
							
							
								Jeppe Johansen 
							
						 
					 
					
						
						
						
						
							
						
						
							03880c2f74 
							
						 
					 
					
						
						
							
							Added some peephole optimizations, and fixed generic unconditional jump optimizations, for AVR.  
						
						... 
						
						
						
						Fixed multiplication code generation for AVR controllers without mul instructions.
Added handling of the old interrupt procedure directive such that procedures with that use RETI instead of RET.
git-svn-id: trunk@31030 - 
						
					 
					
						2015-06-13 12:25:11 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							1114089d25 
							
						 
					 
					
						
						
							
							* IsJumpToLabel checks number of operands  
						
						... 
						
						
						
						* add a few safety checks
git-svn-id: trunk@30446 - 
						
					 
					
						2015-04-05 19:24:22 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							620af1732a 
							
						 
					 
					
						
						
							
							* support for AArch64 branch forwarding  
						
						... 
						
						
						
						o don't forward cb(n)z, as we don't check the maxiumum offsets
   o don't forward conditional branches to global labels, as they also have a
     limited range and at least the OS X toolchain doesn't support this
git-svn-id: trunk@29929 - 
						
					 
					
						2015-02-23 22:53:26 +00:00 
						 
				 
			
				
					
						
							
							
								sergei 
							
						 
					 
					
						
						
						
						
							
						
						
							0041024e5f 
							
						 
					 
					
						
						
							
							* Modified FindRegAlloc() to skip branch delay slots in the same way it is done in GetNextInstruction(). This fixes processing sequences "dealloc reg; branch reg,label; NOP; alloc reg" in BuildLabelTableAndFixRegAlloc(), deallocation is now correctly moved after branch. Before this change, the last allocation was ignored, and deallocation was moved forward until another instruction using reg was encountered.  
						
						... 
						
						
						
						git-svn-id: trunk@28891 - 
						
					 
					
						2014-10-21 20:56:37 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							8060d4a3f7 
							
						 
					 
					
						
						
							
							* when updating registers in RegUsedAfterInstruction, new reg. allocs should be ignored  
						
						... 
						
						
						
						git-svn-id: trunk@27711 - 
						
					 
					
						2014-05-01 19:20:32 +00:00 
						 
				 
			
				
					
						
							
							
								masta 
							
						 
					 
					
						
						
						
						
							
						
						
							81517fdf70 
							
						 
					 
					
						
						
							
							Rerun peephole optimizers on the whole block  
						
						... 
						
						
						
						Up until now if a peephole optimizer matched we've only restarted from
the current instruction. This patch restarts optimizations on the whole
block if the previous run had at least one match.
As this can take considerable time this will only be enabled if -O3 or
higher is specified.
git-svn-id: trunk@26640 - 
						
					 
					
						2014-01-31 23:21:52 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							0eeb3e8d49 
							
						 
					 
					
						
						
							
							* check if the pointer is really assigned when trying to remove unneeded jumps  
						
						... 
						
						
						
						git-svn-id: trunk@25867 - 
						
					 
					
						2013-10-27 16:47:34 +00:00 
						 
				 
			
				
					
						
							
							
								sergei 
							
						 
					 
					
						
						
						
						
							
						
						
							40239e8bcc 
							
						 
					 
					
						
						
							
							* Elaborating removal of branches with delay slots: ignore reg. deallocations that are inserted by RA between branch and its delay slot instruction.  
						
						... 
						
						
						
						* Also skip possible ait_marker's between branch and its immediately following target (which was preventing certain optimizations of "exit" statements on all targets because procedure's exit label is always preceded by location marker).
git-svn-id: trunk@25855 - 
						
					 
					
						2013-10-26 17:45:01 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							2806947a8f 
							
						 
					 
					
						
						
							
							+ FindRegAllocBackward  
						
						... 
						
						
						
						* search reg. allocations backward in RemoveSuperfluousMove because the changed instruction could be the first one in a list
git-svn-id: trunk@25289 - 
						
					 
					
						2013-08-18 18:56:56 +00:00 
						 
				 
			
				
					
						
							
							
								sergei 
							
						 
					 
					
						
						
						
						
							
						
						
							1c84c3edbf 
							
						 
					 
					
						
						
							
							* Fixed label optimizer to work with MIPS, and enabled level 1 optimization for MIPS targets.  
						
						... 
						
						
						
						The difference in branch instruction formats is isolated in function JumpTargetOp, it is a plain function rather than a virtual method, so it can be easily inlined and, after inlining, produces the same code for non-MIPS targets as it was before change.
git-svn-id: trunk@25033 - 
						
					 
					
						2013-07-03 14:40:24 +00:00 
						 
				 
			
				
					
						
							
							
								sergei 
							
						 
					 
					
						
						
						
						
							
						
						
							a4217da7df 
							
						 
					 
					
						
						
							
							* Factored repeating code into separate procedure (IsJumpToLabel)  
						
						... 
						
						
						
						- Assigned(x) check before "x is y" is redundant because "is" operator does the same check.
git-svn-id: trunk@24901 - 
						
					 
					
						2013-06-15 07:02:47 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							b6a4602989 
							
						 
					 
					
						
						
							
							* ignore alignment entries in FindLabel  
						
						... 
						
						
						
						git-svn-id: trunk@22306 - 
						
					 
					
						2012-09-04 10:43:44 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							3e9baa3f47 
							
						 
					 
					
						
						
							
							* check also register type in FindRegalloc  
						
						... 
						
						
						
						git-svn-id: trunk@22195 - 
						
					 
					
						2012-08-22 19:52:43 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							6e62fbc3d2 
							
						 
					 
					
						
						
							
							* more consistent updates of used registers  
						
						... 
						
						
						
						+ FindRegDeAlloc searching for a register deallocation
* FindRegAlloc now returns the allocation object which was found
git-svn-id: trunk@22191 - 
						
					 
					
						2012-08-22 19:52:15 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							07e26cfb12 
							
						 
					 
					
						
						
							
							+ TUsedRegs.Update parameter IgnoreNewAllocs so new allocs of registers can be ignored during update  
						
						... 
						
						
						
						git-svn-id: trunk@22188 - 
						
					 
					
						2012-08-22 19:51:54 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							d472a6d5d0 
							
						 
					 
					
						
						
							
							* changed tregset into tcpuregisterset so it's faster and uses less memory  
						
						... 
						
						
						
						git-svn-id: trunk@21717 - 
						
					 
					
						2012-06-26 19:01:11 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							72746e635d 
							
						 
					 
					
						
						
							
							* optimize TAOptObj.UpdateUsedRegs to avoid multiple passes through the asmlist  
						
						... 
						
						
						
						git-svn-id: trunk@21513 - 
						
					 
					
						2012-06-07 15:19:55 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							17dd362a5a 
							
						 
					 
					
						
						
							
							* white space  
						
						... 
						
						
						
						git-svn-id: trunk@21308 - 
						
					 
					
						2012-05-15 18:08:52 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							2402e8e504 
							
						 
					 
					
						
						
							
							* fixes FindRegAlloc  
						
						... 
						
						
						
						+ GetAllocationString
 * fix comment for lazarus
 * change behaviour of UpdateUsedRegs in PeepHoleOptPass1
git-svn-id: trunk@21306 - 
						
					 
					
						2012-05-15 18:07:52 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							748694a325 
							
						 
					 
					
						
						
							
							* fixes some issues with reg. allocation information  
						
						... 
						
						
						
						git-svn-id: trunk@21303 - 
						
					 
					
						2012-05-15 18:06:41 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							7742dc0006 
							
						 
					 
					
						
						
							
							* don't remove ait_markers between unconditional jumps and the next label,  
						
						... 
						
						
						
						to prevent removing the start/end of assembler blocks, and the start/end
    of nolineinfo blocks (solves the problem that with -O2 -al most of the
    source lines were missing from classes.s)
git-svn-id: trunk@21113 - 
						
					 
					
						2012-04-29 13:13:31 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							3c33bf4e6d 
							
						 
					 
					
						
						
							
							* completed framework for register usage tracking  
						
						... 
						
						
						
						git-svn-id: trunk@20891 - 
						
					 
					
						2012-04-15 20:29:35 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							2a6a4831ea 
							
						 
					 
					
						
						
							
							* basics for generic register usage information  
						
						... 
						
						
						
						git-svn-id: trunk@20886 - 
						
					 
					
						2012-04-15 14:20:47 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							39ab9eceba 
							
						 
					 
					
						
						
							
							* fix OpsEqual  
						
						... 
						
						
						
						git-svn-id: trunk@20875 - 
						
					 
					
						2012-04-14 20:08:56 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							2f5ce095ce 
							
						 
					 
					
						
						
							
							* RefsHaveIndexReg -> cpurefshaveindexreg  
						
						... 
						
						
						
						* cpurefshaveindexreg defined properly in fpcdefs.inc
git-svn-id: trunk@20504 - 
						
					 
					
						2012-03-10 19:43:52 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							4868b09844 
							
						 
					 
					
						
						
							
							* patch by alexvin to replace $ifopt by $push/$pop,  resolves   #20332  
						
						... 
						
						
						
						git-svn-id: trunk@19239 - 
						
					 
					
						2011-09-25 21:19:50 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							4be36c4b2b 
							
						 
					 
					
						
						
							
							* fixed a number of missing label reference removals when deleting  
						
						... 
						
						
						
						instructions that reference them (patch by M.K., mantis #18858 )
git-svn-id: trunk@17067 - 
						
					 
					
						2011-03-03 17:11:53 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							666b4e2469 
							
						 
					 
					
						
						
							
							* fixed range errors in label bookkeeping that caused too much memory to be  
						
						... 
						
						
						
						allocated for optimising jumps
git-svn-id: trunk@14470 - 
						
					 
					
						2009-12-23 21:08:05 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							c71bc4084d 
							
						 
					 
					
						
						
							
							* fixed wrongly fix of r11444 in r12049  
						
						... 
						
						
						
						git-svn-id: trunk@12062 - 
						
					 
					
						2008-11-12 20:55:06 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							74efea399e 
							
						 
					 
					
						
						
							
							* fix getlabelwithsym for 64 bit hosts and 32 bit targets  
						
						... 
						
						
						
						git-svn-id: trunk@12049 - 
						
					 
					
						2008-11-11 19:10:11 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							bf454fad71 
							
						 
					 
					
						
						
							
							* Added function result for unimplemented methods to prevent warnings.  
						
						... 
						
						
						
						git-svn-id: trunk@11448 - 
						
					 
					
						2008-07-23 11:47:03 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							451a290caf 
							
						 
					 
					
						
						
							
							* Fixed 'mixed signed/unsigned' and pointer conversion warnings.  
						
						... 
						
						
						
						git-svn-id: trunk@11444 - 
						
					 
					
						2008-07-23 11:17:27 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							491f0fa1d8 
							
						 
					 
					
						
						
							
							* Replaced all user defined warnings by TODO comments to reduce compiler noise.  
						
						... 
						
						
						
						git-svn-id: trunk@11443 - 
						
					 
					
						2008-07-23 11:00:03 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							6c6bf452ca 
							
						 
					 
					
						
						
							
							* Fixed level 2 comment warnings.  
						
						... 
						
						
						
						git-svn-id: trunk@11441 - 
						
					 
					
						2008-07-23 10:08:48 +00:00 
						 
				 
			
				
					
						
							
							
								yury 
							
						 
					 
					
						
						
						
						
							
						
						
							fcceb9cfa1 
							
						 
					 
					
						
						
							
							* Removed/ifdefed/commented unused local variables.  
						
						... 
						
						
						
						git-svn-id: trunk@11430 - 
						
					 
					
						2008-07-20 23:00:31 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							e4e6f8112d 
							
						 
					 
					
						
						
							
							* fixed some warnings about hidden constructors  
						
						... 
						
						
						
						git-svn-id: trunk@5784 - 
						
					 
					
						2007-01-02 14:18:12 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							4010d66c2c 
							
						 
					 
					
						
						
							
							* arm cond. instruction support  
						
						... 
						
						
						
						git-svn-id: trunk@5387 - 
						
					 
					
						2006-11-14 22:37:22 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							7528e074a5 
							
						 
					 
					
						
						
							
							* fixed compilation for non-ARM  
						
						... 
						
						
						
						git-svn-id: trunk@5380 - 
						
					 
					
						2006-11-14 20:24:03 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							47010f2e5f 
							
						 
					 
					
						
						
							
							* properly optimize jumps on ARM  
						
						... 
						
						
						
						git-svn-id: trunk@5378 - 
						
					 
					
						2006-11-14 19:40:32 +00:00 
						 
				 
			
				
					
						
							
							
								peter 
							
						 
					 
					
						
						
						
						
							
						
						
							658c46b903 
							
						 
					 
					
						
						
							
							* remove tdictionary and tindexarray  
						
						... 
						
						
						
						* symtables based on TFPHashObjectList and TFPObjectList
  * rename torddef.typ to torddef.ordtype
  * rename tfloatdef.typ to tfloatdef.floattype
  * rename tdef.deftype to tdef.typ
  * remove obsolete browser code, browcol is kept so the ide
    can still be compiled
git-svn-id: trunk@5192 - 
						
					 
					
						2006-11-03 00:30:30 +00:00 
						 
				 
			
				
					
						
							
							
								florian 
							
						 
					 
					
						
						
						
						
							
						
						
							85d63d9fa9 
							
						 
					 
					
						
						
							
							* settings refactored  
						
						... 
						
						
						
						git-svn-id: trunk@5094 - 
						
					 
					
						2006-10-30 18:02:58 +00:00 
						 
				 
			
				
					
						
							
							
								peter 
							
						 
					 
					
						
						
						
						
							
						
						
							d07f470b71 
							
						 
					 
					
						
						
							
							* remove ifdef fpc  
						
						... 
						
						
						
						git-svn-id: trunk@4819 - 
						
					 
					
						2006-10-07 13:43:34 +00:00 
						 
				 
			
				
					
						
							
							
								peter 
							
						 
					 
					
						
						
						
						
							
						
						
							b7fe6797bf 
							
						 
					 
					
						
						
							
							Merged revisions 2921-2922,2925 via svnmerge from  
						
						... 
						
						
						
						http://svn.freepascal.org/svn/fpc/branches/linker/compiler 
........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines
  * pass ObjectWriter to ObjectOuput
........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines
  * refactor asmdata
........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines
  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit
........
git-svn-id: trunk@2932 - 
					
						2006-03-16 08:52:22 +00:00 
						 
				 
			
				
					
						
							
							
								peter 
							
						 
					 
					
						
						
						
						
							
						
						
							b6e35a200e 
							
						 
					 
					
						
						
							
							* rewrite of optimizer options  
						
						... 
						
						
						
						git-svn-id: trunk@2901 - 
						
					 
					
						2006-03-13 09:05:50 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							ab5f5ca15e 
							
						 
					 
					
						
						
							
							* fixed ppc compilation  
						
						... 
						
						
						
						git-svn-id: trunk@2778 - 
						
					 
					
						2006-03-05 22:06:44 +00:00 
						 
				 
			
				
					
						
							
							
								Jonas Maebe 
							
						 
					 
					
						
						
						
						
							
						
						
							a9dbc0c8ab 
							
						 
					 
					
						
						
							
							* changed parameters of references_equal from value to const to  
						
						... 
						
						
						
						avoid copying
git-svn-id: trunk@2693 - 
						
					 
					
						2006-02-26 15:02:06 +00:00