Commit Graph

55 Commits

Author SHA1 Message Date
florian
b20f968454 * simple clean ups after dyn. array conversion 2025-03-21 21:35:39 +01:00
Michaël Van Canneyt
07a2c6b37e * Replace labeltable with dynamic array 2025-03-20 17:01:31 +01:00
florian
9ec85f940e * do not remove register deallocations/allocation pairs if the register is written
git-svn-id: trunk@49129 -
2021-04-06 19:16:17 +00:00
florian
91a6223281 * (slight modified) patch by J. Gareth Moreton to reduce number of assembler optimizer passes, resolves #37959
git-svn-id: trunk@47146 -
2020-10-20 20:03:25 +00:00
florian
c7b19e2fc9 * track used register better: if a deallocation is moved/removed, the used register may not be removed from the current register used register set
git-svn-id: trunk@44239 -
2020-02-23 18:24:31 +00:00
florian
872c22842e * do prefetching correctly
* more prefetching inserted
  * unnecessary/wrong UpdateUsedRegs removed

git-svn-id: trunk@43878 -
2020-01-06 20:59:24 +00:00
florian
6371d5f26d + infrastructure to profile different stages of the compiler
git-svn-id: trunk@43869 -
2020-01-06 14:46:32 +00:00
florian
9230ae5aab o overhaul-base.patch by J. Gareth Moreton, base for further patches
+ some inline directives added
  + some functions exported from units

git-svn-id: trunk@42722 -
2019-08-17 16:14:22 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
florian
94d7a02fae * modified patch by Gareth Moreton to pool TmpUsedRegs in the assembler optimizers, resolves #34679
git-svn-id: trunk@40938 -
2019-01-20 14:16:38 +00:00
florian
b1dff29cbf * removed unused units
git-svn-id: trunk@36165 -
2017-05-09 19:53:14 +00:00
nickysn
7ea0429d40 + added new compiler debug ifdef DEBUG_INSTRUCTIONREGISTERDEPENDENCIES, which
adds instruction register usage info to the assembly output (only register
  reads for now, but register writes will also be added later). Useful for
  debugging InstructionLoadsFromReg and other similar functions.

git-svn-id: trunk@35967 -
2017-04-27 13:40:58 +00:00
florian
3c2dab9878 * i386 peephole assembler uses largely the common peephole optimizer infrastructure, the resulting code is besides a few improvements the same
git-svn-id: trunk@33542 -
2016-04-21 20:14:01 +00:00
florian
4ac3953c34 * use InstructionLoadsFromReg instead of RegInInstruction when moving register deallocations
git-svn-id: trunk@33541 -
2016-04-21 19:51:05 +00:00
yury
b26fa07f1a * Fixed notes "var is assigned but not used".
git-svn-id: trunk@31734 -
2015-09-17 13:03:04 +00:00
yury
432248cbf1 * Removed lot of unused vars.
git-svn-id: trunk@31732 -
2015-09-17 12:48:58 +00:00
Jonas Maebe
1b43930749 - removed long deprecated/buggy assembler cse optimiser for i386
o bumped ppu version because optimiser settings can be embedded in generic
     token streams

git-svn-id: trunk@30835 -
2015-05-09 17:25:07 +00:00
florian
2daae5ff03 * moved comment so it is recognized by lazarus as a method description
git-svn-id: trunk@30439 -
2015-04-05 19:08:00 +00:00
Jonas Maebe
92fa75838e * honour -Oonopeephole
git-svn-id: trunk@27106 -
2014-03-11 23:18:58 +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
e1a2b1859a * comments and explanations on tai_regalloc.keep field
* write/read tai_regalloc. field to/from ppu

git-svn-id: trunk@22190 -
2012-08-22 19:52:08 +00:00
florian
b6608e716b + tai_regalloc.keep to force register deallocations to be keep
git-svn-id: trunk@22187 -
2012-08-22 19:51:47 +00:00
florian
2a14394cf5 * cleaned up scheduler code, created own scheduler class to avoid unneeded passes through the assembler
git-svn-id: trunk@22133 -
2012-08-19 19:15:34 +00:00
florian
117c083003 * call inherited Destroy in TAsmOptimizer to avoid memory leak
git-svn-id: trunk@21706 -
2012-06-25 20:19:19 +00:00
florian
8832a34b67 * fix reg. allocs even for procedures without labels
git-svn-id: trunk@21309 -
2012-05-15 18:09:12 +00:00
florian
75e62e42e4 * add debug statements
* avoid possible problems with unknown ra_ types

git-svn-id: trunk@21304 -
2012-05-15 18:07:08 +00:00
florian
748694a325 * fixes some issues with reg. allocation information
git-svn-id: trunk@21303 -
2012-05-15 18:06:41 +00:00
florian
0fe22a358b + first version of ldr instruction scheduler on arm
git-svn-id: trunk@20512 -
2012-03-11 19:10:58 +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
Jonas Maebe
090f2a6108 * defined "class of TAsmOptimizer" as separate type to avoid tripping
Lazarus'  code navigation

git-svn-id: trunk@14411 -
2009-12-11 21:48:58 +00:00
Jonas Maebe
c1c1b2deac * more aint() type casts replaced by int64() type casts
git-svn-id: trunk@12073 -
2008-11-13 19:44:30 +00:00
yury
a039dd6942 * Fixed warnings about hiding inherited method.
git-svn-id: trunk@11449 -
2008-07-23 11:51:19 +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
fd0ed50331 * Removed/commented more unused variables.
* Fixed some uninitialized variable warnings.

git-svn-id: trunk@11442 -
2008-07-23 10:48:53 +00:00
yury
fcceb9cfa1 * Removed/ifdefed/commented unused local variables.
git-svn-id: trunk@11430 -
2008-07-20 23:00:31 +00:00
florian
4010d66c2c * arm cond. instruction support
git-svn-id: trunk@5387 -
2006-11-14 22:37:22 +00:00
florian
85d63d9fa9 * settings refactored
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
peter
89f5d65784 * fix findlohilabel
git-svn-id: trunk@3299 -
2006-04-20 13:59:14 +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
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
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
Jonas Maebe
ec959955bd * fixed generic jumps optimizer and enabled it for ppc (the label table
was not being initialised -> getfinaldestination always failed, which
    caused wrong optimizations in some cases)
  * changed the inverse_cond into a function, because tasmcond is a record
    on ppc
  + added a compare_conditions() function for the same reason
2005-02-26 01:26:59 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
florian
e04b172854 * fixed generic optimizer
* enabled generic optimizer for sparc
2004-10-30 15:21:37 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00