Commit Graph

103 Commits

Author SHA1 Message Date
Jonas Maebe
60d424e97d * another check for register types (should fix new failure
of webtbs/tw7161)

git-svn-id: trunk@7510 -
2007-05-29 11:12:37 +00:00
peter
e1132f8fe1 * check register type to not mixup sse registers
git-svn-id: trunk@7505 -
2007-05-28 19:12:12 +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
3078a1927f * remove ttype
* rename old ttype variables *type to *def
  * rename resulttypepass to pass_typecheck
  * rename pass_2 to pass_generate_code

git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
peter
d07f470b71 * remove ifdef fpc
git-svn-id: trunk@4819 -
2006-10-07 13:43:34 +00:00
Jonas Maebe
cf86412832 * fixed regInInstruction to detect register usages in Ch_ALL
instructions whereby the registers are explicitly named in operands
    (mainly for unsupported mmx/sse instructions)

git-svn-id: trunk@4240 -
2006-07-17 13:54:49 +00:00
Jonas Maebe
a854918f9a * the length of a sequence loading a constant in a register is properly set
* register contents are fully cleared in clearregcontentsfrom()

git-svn-id: trunk@3654 -
2006-05-24 14:38:35 +00:00
Jonas Maebe
a1b2701e5f * if while we are restoring the contents of a register, we encounter an
operation which changes a register, clear the contents of all registers
    which depend on this register

git-svn-id: trunk@3480 -
2006-05-11 16:46:58 +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
peter
785550d7e3 Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines

  * add compiler dir

........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines

  * enabled more code

........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines

  * pe stub and headers

........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines

  * section options cleanup

........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines

  * fixed typecasts

........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines

  * simple linking works

........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines

  * internal linker script

........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines

  * make elf working again

........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines

  * disable dwarf for smartlinking with .a
  * fix section start in new .a file

........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines

  * stab section fixes

........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines

  * basic work to merge stabs sections

........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload tmodules before linking

........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines

  * fixed stabs linking

........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines

  * show code and data size

........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload .stabs from objdata after it is merged

........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines

  * memsize/datasize cleanup
  * check for exports/resources when adding module to linker

........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines

  * new TObjSymbol splitted from TAsmSymbol

........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines

  * coff fixes after recent objsymbol changes

........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines

  * fixed coff writer

........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines

  * fix read-only opening

........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines

  * Read edata from DLLs, basic work

........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines

  * deletedef added
  * don't remove defs from index when we are already clearing everything

........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines

  * moved TObj classes to ogbase
  * ObjSection.SymbolRefs and SymbolDefines list
  * DLL importing

........

git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
Jonas Maebe
ef4ece3674 * fixed allocregbetween in case the first removed tai_regalloc is an
allocation

git-svn-id: trunk@2241 -
2006-01-09 10:07:14 +00:00
Jonas Maebe
1521a33979 * fixed allocregdebug code
git-svn-id: trunk@2204 -
2006-01-07 15:01:46 +00:00
florian
5ea49bedd0 * fixed handling of imul with one parameter
git-svn-id: trunk@1964 -
2005-12-15 22:36:16 +00:00
Jonas Maebe
8b82f90b27 * fixed overflows in counters used for operands in case opcode without
operands

git-svn-id: trunk@1323 -
2005-10-08 12:02:39 +00:00
Jonas Maebe
c3a5f88a7b * fixed webtbs/tw4388: properly process regalloc info coming right after
a tai_marker of type asmblockend, and fixed removal of too many
    tai_regallocs in some cases (daopt386.pas)
  * some preventive fixes to make sure the optimizer doesn't start optimizing
    inside inline assembler blocks (csopt386.pas)

git-svn-id: trunk@1284 -
2005-10-04 13:30:13 +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
florian
21ae782854 * fixed more xmm stuff
+ some win64 stuff added

git-svn-id: trunk@330 -
2005-06-09 20:50:17 +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
126f3fa6cf * fixed loop which could go into neverneverland in case of embedded
assembler blocks
2005-02-26 01:23:29 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
Jonas Maebe
f9b99ad965 * remove "release subregA; allocate other_subreg_of_A" sequences so the
register renaming doesn't stop early
2005-01-03 14:59:28 +00:00
Jonas Maebe
f041b36ce7 * fixed checking of overlapping references 2004-12-30 13:49:42 +00:00
Jonas Maebe
53c04512cc * fixed several regvar related bugs, cycle with -OZp3r doesn't work
yet though
2004-12-28 18:01:40 +00:00
Jonas Maebe
84aa52942f * fixed tracking of usage of flags register
* fixed destroying of "memwrite"'s
  * fixed checking of entire sequences in all cases (previously this was
    only guaranteed if the new sequence was longer than the old one, and
    not if vice versa)
  * fixed wrong removal of sequences if a register load was already
    completely removed in the previous sequence (because in that case,
    that register has to be removed and renamed in the new sequence as
    well before removing the new sequence)
2004-12-18 15:16:10 +00:00
Jonas Maebe
a3627d9345 * fixed compilation with -dcsdebug -dallocregdebug 2004-12-18 14:07:35 +00:00
florian
0037f4a199 * fixed operand size calculation for sse operands
+ all nasm assembler targets to help page output added
2004-12-12 10:50:34 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
Jonas Maebe
cf085fb9d0 * several fixes to allocregbetween() 2004-10-10 15:01:19 +00:00
Jonas Maebe
0cf348b3df * take into account the size of a write to determine whether a write to
one reference influences the contents of another reference
2004-10-06 19:24:38 +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
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +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
756dd463ff * fixed optimizer for new treference fields 2004-02-27 19:55:23 +00:00
florian
fabb9c33ac * top_symbol killed
+ refaddr to treference added
  + refsymbol to treference added
  * top_local stuff moved to an extra record to save memory
  + aint introduced
  * tppufile.get/putint64/aint implemented
2004-02-27 10:21:04 +00:00
peter
ed708a0650 * more byte->word 2003-12-23 19:52:55 +00:00
peter
e6d9331341 * overflow for instruction counters 2003-12-22 23:11:41 +00:00
Jonas Maebe
bade472032 * fixed some more optimizer bugs, make cycle now works with -O2p3,
-O2p3u, -O3p3 and -O3p3u
2003-12-20 22:53:33 +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
peter
2057dbd01a * fix statedebug compile 2003-12-15 15:58:58 +00:00
peter
39b4e0398a * fixed csdebug 2003-12-14 22:42:14 +00:00
peter
19b2170ee4 * optimizer works again with 1.0.x
* fixed wrong loop in FindRegWithConst
2003-12-14 14:18:59 +00:00
Jonas Maebe
942cfc9aac * isgp32reg was being called with both tsuperregister and tregister
parameters, so changed type to tsuperregister (fixes bug reported by
    Bas Steendijk)
  * improved regsizesok() checking so it gives no false positives anymore
2003-12-13 15:48:47 +00:00
Jonas Maebe
f3d82160b1 * fixed some more bugs which only showed up in a ppc cross compiler 2003-12-07 19:19:56 +00:00
Jonas Maebe
7128b3fdd2 * fixed double unit usage 2003-11-22 13:10:32 +00:00
Jonas Maebe
aad37ce53c * fixed optimiser so it compiles again
* fixed several bugs which were in there already for a long time, but
    which only popped up now :) -O2/-O3 will now optimise less than in
    the past (and correctly so), but -O2u/-O3u will optimise a bit more
  * some more small improvements for -O3 are still possible
2003-11-22 00:40:19 +00:00