Commit Graph

155 Commits

Author SHA1 Message Date
florian
6ad3930a5d * fixed broken powerpc compilation
* fixed imm24 constant matching on the arm

git-svn-id: trunk@1074 -
2005-09-11 16:13:55 +00:00
florian
caecabf7ba + more arm assembler stuff
git-svn-id: trunk@1070 -
2005-09-10 09:30:39 +00:00
peter
375a5add80 * rename al_debug to al_typestabs
* first write al_typestabs before other sections

git-svn-id: trunk@1054 -
2005-09-06 06:32:26 +00:00
peter
05a628447f * put typedconsts in own asmlist to prevent mixing
array and string data
  * added al_rodata
  * renamed tasmlist enum names to include al_ prefix

git-svn-id: trunk@899 -
2005-08-17 08:42:52 +00:00
daniel
22e89e1a42 * Proof of concept: Support threadvars using segment registers.
git-svn-id: trunk@740 -
2005-07-24 21:06:23 +00:00
daniel
d05f58b604 * Group asmlists into array to be able to add
some of them more comfortably.
  * x86_64 compilation was broken, fixed.
  * Sparc compilation was broken, fixed.

git-svn-id: trunk@731 -
2005-07-23 13:44:32 +00:00
daniel
45bcc5b07a * Add support for jmp $0011:$22334455 to Intel asm reader, request from
a user that is writing an operating system.
  * Fix mkx86ins bug to interpret imm16:imm32 as a single operand

git-svn-id: trunk@606 -
2005-07-10 07:42:14 +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
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
florian
b1c8bfc478 + x86_64 pic draft 2005-02-06 00:05:56 +00:00
peter
79eac1c0b3 * fix [regpara] in intel assembler 2005-01-31 17:07:50 +00:00
peter
1cf3aef0f0 * regalloc bind to instructions need to get real ait_instruction 2004-11-01 10:34:08 +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
f5471aef6e * more spilling rewrites 2004-10-05 20:41:01 +00:00
peter
8fb3536f6e * simple regvar support, not yet finished 2004-09-26 17:45:29 +00:00
florian
cf25a973f8 * fixed alignment of variant records
* more alignment problems fixed
2004-08-15 13:30:18 +00:00
florian
6368652be2 * fixed several sparc alignment issues
+ Jonas' inline node patch; non functional yet
2004-08-14 14:50:42 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00
peter
d2bed9e608 * ignore marker block when checking for empty list 2004-05-23 14:31:05 +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
florian
e678705648 * small x86_64 fixes 2004-04-12 18:59:32 +00:00
florian
74501ae73f * some alignment issues resolved
* compiler doesn't generate anymore instructions not supported by the linux fpe
2004-03-16 22:12:10 +00:00
peter
d4d90841d4 * fix lineinfo broken by valgrind patch 2004-03-15 16:09:03 +00:00
michael
2f26f9ebb4 + Fix from peter: fixes crash when inlining assembler code referencing local vars 2004-03-15 08:44:51 +00:00
peter
a627c15298 * fix memleak with top_local 2004-03-14 22:47:56 +00:00
peter
55daf96ba7 * disable some debuginfo info when valgrind support is used 2004-03-14 20:10:56 +00:00
florian
61f15e4ec4 * make cycle fixed
+ pic support for darwin
  + support of importing vars from shared libs on darwin implemented
2004-03-02 17:32:12 +00:00
olle
4fecc1a56f * big transformation of Tai_[const_]Symbol.Create[data]name* 2004-03-02 00:36:32 +00:00
daniel
52dc65fe47 - Removed troublesome writeln statement 2004-02-27 12:13:15 +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
356b3378e8 * tai_const.create_ptr added 2004-02-26 16:16:38 +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
Jonas Maebe
9495f77117 - removed taicpu.is_reg_move because it's not used anymore
+ support tracking fpu register moves by rgobj for the ppc
2004-02-08 20:15:42 +00:00
peter
1422985ca0 * Change several $ifdef i386 to x86
* Change several OS_32 to OS_INT/OS_ADDR
2004-01-31 17:45:16 +00:00
florian
35b8e93073 * fixed more alignment issues 2004-01-30 13:42:03 +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
florian
37454274bc * fixed several arm floating point issues 2004-01-24 18:12:40 +00:00
florian
d7786f6246 * fixed generic shl/shr operations
+ added register allocation hook calls for arm specific operand types:
    register set and shifter op
2004-01-23 15:12:49 +00:00
peter
c34c9af5ce * moved spilling code from taicpu to rg 2004-01-12 16:37:59 +00:00
Jonas Maebe
da74a9fea6 - removed unused methods from old generic spilling code 2003-12-28 16:20:09 +00:00
peter
1c7e6fc380 * sparc updates
* use registertype in spill_register
2003-12-26 14:02:30 +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
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
84b1451a34 * tai_const.create_32bit changed to cardinal 2003-12-08 22:34:24 +00:00
Jonas Maebe
2aba43c797 * completely overhauled and fixed generic spilling code. New method:
spilling_get_operation_type(operand_number): returns the operation
    performed by the instruction on the operand: read/write/read+write.
    See powerpc/aasmcpu.pas for an example
2003-12-06 22:16:12 +00:00
florian
1a87a5ed45 * fixed several arm calling conventions issues
* fixed reference reading in the assembler reader
  * fixed a_loadaddr_ref_reg
2003-12-03 17:39:04 +00:00
peter
1b0d0ca3c4 * s128real type is not compatible with s80real 2003-12-01 18:43:31 +00:00
florian
1af574ceca * assembler readers OOPed
+ typed currency constants
  + typed 128 bit float constants if the CPU supports it
2003-11-12 16:05:39 +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
48ef24605a * support scalefactor for opr_local
* support reference with opr_local set, fixes tw2631
2003-10-30 19:59:00 +00:00
Jonas Maebe
c1279ba62b * allow more than 3 args in the spilling routine 2003-10-29 21:06:39 +00:00
peter
5925d38ac7 * support indexing and offset retrieval for locals 2003-10-29 15:40:20 +00:00
mazen
81123566d3 * code reformatted 2003-10-29 14:42:14 +00:00
mazen
2d061f8108 * Splling function devided to sub functions to make it easy to understand.
This commit is just to allow easy diffs to validate the migration (hint use -w)
2003-10-29 14:05:45 +00:00
peter
96afb56699 * asmnode.get_position now inserts a marker 2003-10-24 17:39:41 +00:00
peter
4a1ecb07d1 * splitted buildderef and buildderefimpl to fix interface crc
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80 * write derefdata in a separate ppu entry 2003-10-22 20:39:59 +00:00
peter
96f9973b46 * taicpu_abstract.oper[] changed to pointers 2003-10-21 15:15:35 +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
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
8af51ea6d3 * locals and paras are allocated in the code generation
* tvarsym.localloc contains the location of para/local when
    generating code for the current procedure
2003-09-23 17:56:05 +00:00
peter
b9d09a4e5c * preparations for different default calling conventions
* various RA fixes
2003-09-07 22:09:34 +00:00
florian
0d3832776f * first bunch of adaptions of arm compiler for new register type 2003-09-04 00:15:28 +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
peter
8cf0c122f4 * remove convert_registers 2003-08-21 14:47:41 +00:00
daniel
cdb8a15f4a * Some more R_NO changes
* Preventive code to loadref added
2003-08-20 20:29:06 +00:00
daniel
63e1b70931 * Notranslation changed into -sr functionality 2003-08-17 20:47:47 +00:00
Jonas Maebe
4f8c390198 * fixed regvars so they work with newra (at least for ppc)
* fixed some volatile register bugs
  + -dnotranslation option for -dnewra, which causes the registers not to
    be translated from virtual to normal registers. Requires support in
    the assembler writer as well, which is only implemented in aggas/
    agppcgas currently
2003-08-17 16:59:20 +00:00
peter
52c73e80d1 * start of sparc support for newra 2003-08-11 21:18:20 +00:00
Jonas Maebe
b2cdd72e5c * always add dummy marker object at the start of an assembler list, so
the optimizer can't remove the first object
2003-07-02 16:43:48 +00:00
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
peter
b42efec29d * create rtti label using newasmsymboldata and update binding
only when calling tai_symbol.create
  * tai_symbol.create_global added
2003-05-12 18:13:57 +00:00
peter
f4b818fc1d * removed funcretn,funcretsym, function result is now in varsym
and aliases for result and function name are added using absolutesym
  * vs_hidden parameter for funcret passed in parameter
  * vs_hidden fixes
  * writenode changed to printnode and released from extdebug
  * -vp option added to generate a tree.log with the nodetree
  * nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
daniel
6aa01a99a9 * Ifdefs around a lot of calls to cleartempgen
* Fixed registers that are allocated but not freed in several nodes
  * Tweak to register allocator to cause less spills
  * 8-bit registers now interfere with esi,edi and ebp
    Compiler can now compile rtl successfully when using new register
    allocator
2003-04-25 08:25:26 +00:00
florian
47a3437dba * comp is now written with its bit pattern to the ppu instead as an extended 2003-04-24 13:03:01 +00:00
peter
9ed2ce8c12 * removed some notes/hints 2003-04-22 14:33:38 +00:00
daniel
25059e21b6 + Implemented the actual register allocator
+ Scratch registers unavailable when new register allocator used
  + maybe_save/maybe_restore unavailable when new register allocator used
2003-04-22 10:09:34 +00:00
daniel
86bcea6ef5 * Code generator converted to new register notation
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
peter
2b0e576cbe * tai_const_symbol.createdataname added 2003-01-30 21:46:20 +00:00
daniel
a86b31c4f0 * Another 200301081 fixed 2003-01-21 08:48:08 +00:00
daniel
7b2fd10fb4 * Converted some code in cgx86.pas to new register numbering 2003-01-09 20:40:59 +00:00
daniel
6e507ba483 * Added register conversion 2003-01-09 15:49:56 +00:00
daniel
55a161bbbf * Tregister changed into a record 2003-01-08 18:43:56 +00:00
florian
b59b436130 * x86-64 compiles
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
peter
8a5d95d911 * symbol count fix merged 2002-12-06 17:50:21 +00:00
carl
64655be168 * memory optimization (3-4%) : cleanup of tai fields,
cleanup of tdef and tsym fields.
  * make it work for m68k
2002-11-17 16:31:55 +00:00
peter
edbd98176b * made tasmsymbol.refs private (merged) 2002-11-15 16:29:30 +00:00
peter
bfd72ad5d5 * merged changes from 1.0.7 up to 04-11
- -V option for generating bug report tracing
    - more tracing for option parsing
    - errors for cdecl and high()
    - win32 import stabs
    - win32 records<=8 are returned in eax:edx (turned off by default)
    - heaptrc update
    - more info for temp management in .s file with EXTDEBUG
2002-11-15 01:58:45 +00:00
carl
c3bfb968a4 + NOOPT removed the optinfo field 2002-11-09 15:38:03 +00:00
carl
67486c96c3 * fixes for Delphi 6 compilation
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
peter
91b49914f6 * More fixes for cross unit inlining, all tnodes are now implemented
* Moved pocall_internconst to po_internconst because it is not a
    calling type at all and it conflicted when inlining of these small
    functions was requested
2002-08-19 19:36:42 +00:00
peter
98dd65b0f3 * inlining is now also allowed in interface
* renamed write/load to ppuwrite/ppuload
  * tnode storing in ppu
  * nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
florian
2de332fa28 * powerpc compilation fix 2002-08-16 05:21:09 +00:00
peter
8082f79ea6 * first things tai,tnode storing in ppu 2002-08-15 19:10:35 +00:00