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
Jonas Maebe
db580afbff
* fixed refs bookkeeping of jump labels (fix from Florian in popt386)
...
git-svn-id: trunk@2225 -
2006-01-08 15:50:14 +00:00
Jonas Maebe
cd3f064a33
+ enabled postpeepholeopts phase
...
+ optimize "integer op" followed by comparison of target register with zero
to a variant of that integer op which sets the flags (ppc)
+ change rlwinm. instructions which do nothing but an "and" operation into
andi./andis., since the rlwinm. is cracked on the G5 while andi./andis.
isn't
git-svn-id: trunk@1361 -
2005-10-12 19:47:21 +00:00
Jonas Maebe
ab3bc45fa4
* cpu-specific overrides of optimizer methods now get called
...
+ first simple rlwinm optimization for ppc
git-svn-id: trunk@1320 -
2005-10-07 21:44:00 +00:00
peter
82faa95118
* lineinfo fixed for binary writer
...
* add tai_directive to replace old tai_direct calls
in powerpc
git-svn-id: trunk@1139 -
2005-09-19 11:47:30 +00:00
peter
a3ab2053c9
* support multiple asmlabel types, renamed getlabel to
...
getjumplabel and added type para to getlabel for specific types
* moved lineinfo generation from assemble and aggas to dbgstabs
git-svn-id: trunk@1120 -
2005-09-18 21:16:10 +00:00
Jonas Maebe
4c463a7a0a
* check unconditional jumps to make sure that they actually refer to a
...
tasmlabel instead of blindly assuming that they always do
git-svn-id: trunk@1080 -
2005-09-14 19:46:57 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00