Jonas Maebe
7bb3a1fe22
* fixed register allocation of gen_load_para_value() and backwards
...
extension of regalloc info in general
git-svn-id: trunk@4293 -
2006-07-25 13:54:48 +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
florian
94038b0d83
+ translate register variable locations, enables register variable debug info, with SSA it requires to be extended maintaining location list
...
git-svn-id: trunk@2409 -
2006-02-02 21:27:23 +00:00
florian
137f8f340d
* handling of address registers in references fixed
...
* write address registers as areg when compiling with -sr
git-svn-id: trunk@2398 -
2006-02-01 22:45:14 +00:00
Jonas Maebe
fc1b5c9fe2
* fixed backwards extension of regalloc information
...
git-svn-id: trunk@2193 -
2006-01-06 11:17:29 +00:00
Jonas Maebe
b769a968e3
* make sure live_start and live_end are correctly updated while
...
generating the initialisation and entry code
git-svn-id: trunk@2185 -
2006-01-05 17:46:16 +00:00
Jonas Maebe
7aa315c71a
* made some Tcpuregisterset parameters const to avoid useless copying
...
git-svn-id: trunk@2176 -
2006-01-05 10:10:25 +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
peter
41c253b65d
* during spilling only add deallocs to live_registers that belong
...
to the instruction
2005-04-07 16:25:05 +00:00
peter
e207c402fc
* only in EXTDEBUG leave register allocator when it fails. Otherwise
...
give an IE
2005-04-07 15:42:04 +00:00
Jonas Maebe
a5c94ddccd
* removed some unused variables
2005-03-25 21:55:43 +00:00
peter
5452cccaad
* fix spilling code when explicit cpu registers are used in an
...
instruction
2005-03-20 19:47:46 +00:00
Jonas Maebe
6c38093871
* fixed spilling for several ppc instructions which only read registers
...
+ added support for registers in references that get changed (load/store
with update)
2005-02-18 23:37:51 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
peter
db81b4333a
* fatal error when procedure is too complex
2004-11-14 21:08:27 +00:00
florian
8ffe3c6a9e
* debug writeln removed
2004-11-06 18:58:18 +00:00
florian
42e14b6825
+ additional extdebug check for wrong add_reg_instructions added
...
* too long manglednames are cut off at 200 chars using a crc
2004-11-06 17:44:47 +00:00
peter
1cf3aef0f0
* regalloc bind to instructions need to get real ait_instruction
2004-11-01 10:34:08 +00:00
Jonas Maebe
dc71fc8290
* make sure live_start/end is never a tai_regalloc, as those can be
...
removed by the register allocator and thus become invalid. This fixed
make cycle with -Or for ppc, but I'm not sure what the warning on
symsym.pas:1663 means. Since the tlocation change, even regular make
cycle doesn't work anymore though...
2004-10-31 23:18:29 +00:00
peter
c95a859f0a
* generic tlocation
...
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
florian
36ca15cf07
* fixed compilation of system unit on arm
2004-10-31 16:04:30 +00:00
florian
e04b172854
* fixed generic optimizer
...
* enabled generic optimizer for sparc
2004-10-30 15:21:37 +00:00
peter
30be9e8e5d
* during translation only process regalloc for the current regtype
2004-10-24 17:04:01 +00:00
mazen
581b52422c
- remove $IFDEF DELPHI and related code
...
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
60c73cc0e5
* -Or fixes for open array
2004-10-13 21:12:51 +00:00
peter
b0ebc06ce6
* removed warning about register used only once
2004-10-11 15:47:03 +00:00
peter
eaf46c4fb1
* live_registers must be restored after the spilling store code
...
is generate to add correct conflicts for extra temporary registers
2004-10-06 20:14:08 +00:00
peter
f5471aef6e
* more spilling rewrites
2004-10-05 20:41:01 +00:00
peter
ee3585f56f
* spilling code rewritten for x86. It now used the generic
...
spilling routines. Special x86 optimization still needs
to be added.
* Spilling fixed when both operands needed to be spilled
* Cleanup of spilling routine, do_spill_readwritten removed
2004-10-04 20:46:22 +00:00
peter
8fb3536f6e
* simple regvar support, not yet finished
2004-09-26 17:45:29 +00:00
peter
65c3ba277c
* ungetregister is now only used for cpuregisters, renamed to
...
ungetcpuregister
* renamed (get|unget)explicitregister(s) to ..cpuregister
* removed location-release/reference_release
2004-09-25 14:23:54 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
florian
1eb575fa22
* fixed longbool(<int64>) on sparc
2004-08-24 21:02:32 +00:00
daniel
c4e909e316
* Add check <= 255 when adding to adj_colours
2004-07-09 21:38:30 +00:00
daniel
649bd81edb
* Use a normal pascal set in assign_colours, since it only will contain
...
real registers
2004-07-08 09:57:55 +00:00
daniel
d2a2aeac9f
* supregset_reset clears 8kb of memory. However, it is being called in
...
inner loops, see for example colour_registers. According to profile data
this causes fillchar to be the most time consuming procedure.
Some modifications done to make it clear less than 8kb of memory each
call. Divides time spent in fillchar by two, but it still is the no.1
procedure.
2004-07-07 17:35:26 +00:00
florian
34d634c64d
* fixed arm compilation
2004-06-22 18:24:18 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
e9bb27df36
* spilling of doubles on sparc fixed
2004-06-20 08:47:33 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
5358278ca1
tai_regalloc.allocation changed to ratype to notify rgobj of register size changes
2004-05-22 23:34:27 +00:00
Jonas Maebe
b20d72aa36
* do not remove "allocation,deallocation" pairs, as those are important
...
for the optimizer
2004-04-26 19:57:50 +00:00
peter
3a5717c1b7
* rewrote add_to_movelist, it now uses a field to store the number
...
of allocated entries. Also made it using less hardcoded values
2004-03-14 22:50:04 +00:00
peter
56c727153a
* check if movelist is valid
2004-03-14 20:06:17 +00:00
peter
ee569d7817
* make extcycle is working again
2004-02-12 15:54:03 +00:00
olle
193e41b455
+ check that register allocation is not made at the wrong moment
2004-02-09 20:12:23 +00:00
Jonas Maebe
71202a141d
* taicpu.is_same_reg_move() now gets a regtype parameter so it only
...
removes moves of that particular register type. This is necessary so
we don't remove the live_start instruction of a register before it
has been processed
2004-02-08 23:10:21 +00:00
daniel
9868155d53
* Register allocator speed boost
2004-02-08 14:26:28 +00:00
daniel
46d241a666
* Take advantage of our new with statement optimization
2004-02-07 23:28:34 +00:00
daniel
be3eabc26f
* Some changes to better accomodate very large movelists
...
* movelist resizing now exponential (avoids heap fragmentation, saves
300 kb memory in make cycle)
* Trgobj.combine hand-optimized (still too slow)
2004-02-06 13:34:46 +00:00
peter
8caaa7740d
* more record alignment fixes
2004-01-28 22:16:31 +00:00
florian
8ef2f96215
* made DoSpill* overrideable
...
+ add_cpu_interferences added
2004-01-26 17:40:11 +00:00
daniel
97e87aaebc
* reginfo now also only allocated during register allocation
...
* third round of gdb cleanups: kick out most of concatstabto
2004-01-26 16:12:27 +00:00
daniel
ecf7accc38
* Keep interference bitmap only allocated during register allocation.
...
Saves 2 mb of memory.
2004-01-25 23:21:02 +00:00
peter
c34c9af5ce
* moved spilling code from taicpu to rg
2004-01-12 16:37:59 +00:00
daniel
61d29c4e4e
* Register allocation bug fixed
2004-01-11 13:21:35 +00:00
daniel
cdbb601a4e
* Degree=0 problem fixed
...
* Degree to high problem fixed
2004-01-09 22:02:29 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +00:00
peter
0734904796
* only report unreleased imaginary registers
2003-12-22 23:09:34 +00:00
peter
cc8d2226ae
* made decrease_degree working, but not really fixed
2003-12-22 22:13:46 +00:00
florian
78aeec22ca
* arm compiler compilation fixed
2003-12-18 17:06:21 +00:00
peter
bc4f29e15c
* don't insert dealloc before alloc of the same register
2003-12-17 21:59:05 +00:00
daniel
23aa8e1cda
* Automatic conversion from integer constants to pointer constants is no
...
longer done except in Delphi mode
2003-12-16 09:41:44 +00:00
peter
1367e342db
* reg allocations for imaginary register are now inserted just
...
before reg allocation
* tregister changed to enum to allow compile time check
* fixed several tregister-tsuperregister errors
2003-12-15 21:25:48 +00:00
daniel
e60da116b0
* More microoptimizations
2003-12-15 16:37:47 +00:00
peter
2057dbd01a
* fix statedebug compile
2003-12-15 15:58:58 +00:00
daniel
7061f04355
* Register allocator speed optimizations
...
- Worklist no longer a ringbuffer
- No find operations are left
- Simplify now done in constant time
- unusedregs is now a Tsuperregisterworklist
- Microoptimizations
2003-12-14 20:24:28 +00:00
peter
bce5a1e252
* rg[tregistertype] added in tcg
2003-12-12 17:16:17 +00:00
peter
1407a03ff1
* remove redundant calls to add_edge_used
2003-12-04 23:27:32 +00:00
peter
825d5b4ed7
* check for add_move_instruction
2003-11-29 17:36:41 +00:00
florian
4584775cbe
* changed some types to prevend range check errors
2003-11-24 15:17:37 +00:00
peter
f44380e4a9
* fixed alias/colouring > 255
2003-11-10 19:05:50 +00:00
florian
bbf7300a0c
* Florian's culmutative nr. 1; contains:
...
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
2003-11-07 15:58:32 +00:00
peter
9e66b09843
* call firstpass before allocation and codegeneration is started
...
* move leftover code from pass_2.generatecode() to psub
2003-10-30 16:22:40 +00:00
Jonas Maebe
cf8b181ff2
* some ALLOWDUPREG improvements
2003-10-29 21:29:14 +00:00
peter
96f9973b46
* taicpu_abstract.oper[] changed to pointers
2003-10-21 15:15:35 +00:00
florian
13a4e41b0c
* improved speed; reduced memory usage of the interference bitmap
2003-10-19 12:36:36 +00:00
florian
05fcae577a
* some ppc stuff fixed
...
* memory leak fixed
2003-10-19 01:34:30 +00:00
peter
9f54e1b7c5
* made worklists dynamic in size
2003-10-18 15:41:26 +00:00
peter
ec7fb064d0
* fixed last commit
2003-10-17 16:16:08 +00:00
florian
5b33ab3643
* fixed more ppc stuff
2003-10-17 15:25:18 +00:00
peter
d0de3b3ea8
* 64k registers supported
...
* fixed some memory leaks
2003-10-17 14:38:32 +00:00
florian
1df13c788c
* fixed some MMX<->SSE
...
* started to fix ppc, needs an overhaul
+ stabs info improve for spilling, not sure if it works correctly/completly
- MMX_SUPPORT removed from Makefile.fpc
2003-10-11 16:06:42 +00:00
peter
fb81b7ebbb
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
...
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
2003-10-10 17:48:13 +00:00
daniel
b2343f4b16
* Register allocator splitted, ans abstract now
2003-10-09 21:31:37 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
2771f49e22
* reuse registers with the least conflicts
2003-09-30 19:54:42 +00:00
peter
540691bf02
* optimized releasing of registers
2003-09-29 20:58:55 +00:00
peter
dea558b5c7
* return reg 255 when allowdupreg is defined
2003-09-28 13:41:12 +00:00
peter
bf66a6e4ab
* fix filepositions
...
* insert spill temp allocations at the start of the proc
2003-09-25 16:19:32 +00:00
peter
76a53a375d
* varspez in calls to push_addr_param
2003-09-16 16:17:01 +00:00
daniel
90e1ca64f3
* Fixed fast spilling functionality by re-adding the code that initializes
...
precoloured nodes to degree 255. I would like to play hangman on the one
who removed that code.
2003-09-12 19:07:42 +00:00
florian
8f66389b46
* improved arm code generation
...
* move some protected and private field around
* the temp. register for register parameters/arguments are now released
before the move to the parameter register is done. This improves
the code in a lot of cases.
2003-09-11 11:54:59 +00:00
daniel
49e539ac8d
* Adding register allocation order
2003-09-09 20:59:27 +00:00
peter
05a15df3c2
* use register with least interferences in spillregister
2003-09-09 15:55:44 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
peter
610cbec252
* fixes for FPU register allocation
2003-09-03 21:06:45 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
florian
220e05dd5e
* fixed arm concatcopy
...
+ arm support in the common compiler sources added
* moved some generic cg code around
+ tfputype added
* ...
2003-09-03 11:18:36 +00:00