Commit Graph

266 Commits

Author SHA1 Message Date
peter
33a834821f * paraloc branch merged 2004-09-21 17:25:12 +00:00
peter
7f8844e74d * release localsymtables when module is compiled 2004-09-14 16:33:46 +00:00
peter
180c042911 * finalize all (also procedure local) typedconst at unit finalization 2004-09-13 20:30:05 +00:00
michael
dd042a896b + Patch from Peter to fix debuginfo in constructor. 2004-08-23 11:00:06 +00:00
Jonas Maebe
5ac21c998a * don't finalize typed consts (fixes bug3212, but causes memory leak;
they should be finalized at the end of the module)
2004-07-17 13:14:17 +00:00
Jonas Maebe
f1bda1700a * support register parameters for inlined procedures + some inline
cleanups
2004-07-09 23:41:04 +00:00
Jonas Maebe
1f990337c3 * fixed one regvar problem, but regvars are still broken since the dwarf
merge...
2004-07-04 12:24:59 +00:00
peter
700c983c8e * fixed size of exceptbuf 2004-06-29 20:57:21 +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
Jonas Maebe
ecb226a54f * fixed bug regarding parameters on the ppc (they were allocated twice
under some circumstances and not at all in others)
2004-06-01 20:39:33 +00:00
Jonas Maebe
74cad9b483 * more regvar optimizations in location_force_reg 2004-05-30 21:41:15 +00:00
Jonas Maebe
43fa5b9f9c * some optimizations and associated fixes for better regvar code 2004-05-30 21:18:22 +00:00
peter
1bcda5c022 * first load para's to temps before calling entry code (profile 2004-05-28 21:14:13 +00:00
peter
c96ba04d84 * fixed qword(longint) that removed sign from the number
* removed code in the compiler that relied on wrong qword(longint)
    code generation
2004-05-23 15:23:30 +00:00
peter
72365ec95b * implicit_finally flag must be set in pass1
* add check whether the implicit frame is generated when expected
2004-05-23 15:06:20 +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
peter
c553f6b320 * add DEBUGINFO symbol to reference the .o file that includes the
stabs info for types and global/static variables
  * debuginfo flag added to ppu to indicate whether debuginfo is
    generated or not
2004-05-19 21:16:12 +00:00
peter
2b1fee21f1 * fix stabs for globals 2004-05-02 17:26:19 +00:00
peter
207e3b1231 * cleaner temp get/unget for exceptions 2004-03-29 14:43:47 +00:00
peter
4fc210952e * use loadnode and finalize_data_node for init/final code to support
threadvars correctly
2004-03-03 22:02:52 +00:00
olle
4fecc1a56f * big transformation of Tai_[const_]Symbol.Create[data]name* 2004-03-02 00:36:32 +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
florian
01d16548f4 * fixed exception reason size for 64 bit systems 2004-02-22 18:27:21 +00:00
Jonas Maebe
a8450c695d * fixed regvars 2004-02-08 17:45:53 +00:00
florian
55557eea92 * more x86-64 fixes 2004-02-05 19:35:27 +00:00
florian
465aa5851b * several fixes to compile x86-64 system 2004-02-05 01:24:08 +00:00
daniel
d735071838 * Rtti generation moved to ncgutil
* Assmtai usage of symsym removed
  * operator overloading cleanup up
2004-02-04 22:15:15 +00:00
peter
8c5b0f7d82 * first try to get cpupara working for x86_64 2004-02-04 22:01:13 +00:00
peter
ecfbbeffc3 * renamed xNNbittype to xNNinttype
* renamed registers32 to registersint
  * replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
daniel
862e121a0a * Last steps before removal of aasmtai dependency in symsym can be
accomplished.
2004-01-31 18:40:15 +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
peter
ac1332a388 * fixed stackchecking for register calling 2004-01-21 21:01:34 +00:00
Jonas Maebe
df428f7a5d * fixed allocation of parameters passed by reference for powerpc in
callee
2004-01-17 15:55:10 +00:00
florian
f936718fa1 * x86-64 compilation fixed 2004-01-13 18:08:58 +00:00
peter
47f08937e4 * use localalign info for alignment for locals and temps
* sparc fpu flags branching added
  * moved powerpc copy_valye_openarray to generic
2004-01-12 22:11:38 +00:00
Jonas Maebe
85e84512fb * fixed procedures declared as "interrupt" for non-x86 2003-12-28 21:57:43 +00:00
florian
ace2d682b0 * rtl and compiler compile with -Cfsse2 2003-12-26 13:19:16 +00:00
florian
3d8e1ab1fb + fpu<->mm register conversion 2003-12-26 00:32:21 +00:00
florian
9c476ba5f1 - delete parameter in cg64 methods removed 2003-12-24 00:10:02 +00:00
florian
d1116fb7f1 + second_floataddsse implemented 2003-12-23 14:38:07 +00:00
florian
6170faf334 * fixed some x86-64 issues 2003-12-22 19:00:17 +00:00
Jonas Maebe
24fe6134a0 * fixed typo found by Charlie 2003-12-07 16:28:30 +00:00
florian
bfe452936f * reverted Peter's alloctemp patch; hopefully properly 2003-12-06 01:15:22 +00:00
peter
64b0a0eadf * delayed paraloc allocation, a_param_*() gets extra parameter
if it needs to allocate temp or real paralocation
  * optimized/simplified int-real loading
2003-12-03 23:13:19 +00:00
florian
a567970402 * fixed several arm related problems 2003-11-30 19:35:29 +00:00
florian
ea754b9a49 * fixed several pi_do_call problems 2003-11-29 20:13:25 +00:00
peter
51384ca53c * register calling is left-right
* parameter ordering
  * left-right calling inserts result parameter last
2003-11-23 17:05:15 +00:00
Jonas Maebe
b3086d3122 + extra allocations of function result regs for the optimiser 2003-11-22 00:31:25 +00:00
peter
a1cb920b51 * remove temporary stdcall hack 2003-11-11 21:10:12 +00:00
peter
f663d2488f * cross unit inlining fixed 2003-11-10 22:02:52 +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
6b90162c5a * fixes for temp type patch 2003-11-04 19:03:50 +00:00
peter
30f1eb4705 * fix for referencecounted temps 2003-11-04 15:35:13 +00:00
florian
2660c358f3 * fixed compilation of ppc system unit 2003-10-25 11:34:02 +00:00
florian
05fcae577a * some ppc stuff fixed
* memory leak fixed
2003-10-19 01:34:30 +00:00
peter
0939085ab1 * commented out more obsolete constants 2003-10-17 15:08:34 +00:00
peter
d0de3b3ea8 * 64k registers supported
* fixed some memory leaks
2003-10-17 14:38:32 +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
9365837ecd * fix register calling for assembler procedures
* fix result loading for assembler procedures
2003-10-07 18:18:16 +00:00
peter
e27d6f67da * inline supported again, LOC_REFERENCEs are used to pass the
parameters
  * inlineparasymtable,inlinelocalsymtable removed
  * exitlabel inserting fixed
2003-10-07 15:17:07 +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
22158bfb99 * updates for inlining 2003-09-30 21:02:37 +00:00
peter
540691bf02 * optimized releasing of registers 2003-09-29 20:58:55 +00:00
peter
2693582200 * register paras and local copies updates 2003-09-28 21:47:18 +00:00
peter
99bb20747e * parent framepointer changed to hidden parameter
* tloadparentfpnode added
2003-09-28 17:55:03 +00:00
peter
d77cf79d3b * optimized releasing of registers 2003-09-28 13:39:38 +00:00
peter
2392f28675 * parameter fixes 2003-09-25 21:28:00 +00:00
peter
72b8932713 * check for refs>0 in init/final local data 2003-09-23 21:03:59 +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
76a53a375d * varspez in calls to push_addr_param 2003-09-16 16:17:01 +00:00
peter
c8bc89720c * location_force_reg gives IE when size=OS_NO 2003-09-14 21:33:37 +00:00
peter
f8bb9785e0 * remove obsolete code already in comments 2003-09-14 19:18:10 +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
marco
cd5ae5fcc3 * Patch from Peter for paraloc 2003-09-10 08:31:47 +00:00
peter
b9d09a4e5c * preparations for different default calling conventions
* various RA fixes
2003-09-07 22:09:34 +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
daniel
cdb8a15f4a * Some more R_NO changes
* Preventive code to loadref added
2003-08-20 20:29:06 +00:00
peter
d113495cf1 * fixed stackalloc to not allocate localst.datasize twice
* order of stackalloc code fixed for implicit init/final
2003-08-20 17:48:49 +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
daniel
42c320cb29 * cs_regalloc renamed to cs_regvars to avoid confusion with register
allocator
  * Some preventive changes to i386 spillinh code
2003-08-09 18:56:54 +00:00
daniel
557ac8b02e * Fixed a register allocator bug
* Figured out why -dnewra generates superfluous "mov reg1,reg2"
    statements: changes in location_force. These moves are now no longer
    constrained so they are optimized away.
2003-08-03 14:09:50 +00:00
Jonas Maebe
177d57f22c * split en_exit_code into a part that may allocate a register and a part
that doesn't, so the former can be done before the register colouring
    has been performed
2003-07-23 11:04:15 +00:00
peter
32d076480b * framepointer fixes for sparc
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
daniel
268bfcf784 * Fixed register allocator. *Lots* of fixes. 2003-07-06 15:31:20 +00:00
peter
b7d99ec934 * paraloc splitted in callerparaloc,calleeparaloc
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
Jonas Maebe
aa9f048e02 * fixed -dnewra compilation problems 2003-06-17 18:13:51 +00:00
peter
43746bc54a * alloc register for function result 2003-06-17 16:32:44 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
peter
77d641fa2a * init/final of procedure data splitted from genentrycode
* use asmnode getposition to insert final at the correct position
    als for the implicit try...finally
2003-06-09 12:23:29 +00:00
Jonas Maebe
edb2179730 + added freeintparaloc
* ppc get/freeintparaloc now check whether the parameter regs are
    properly allocated/deallocated (and get an extra list para)
  * ppc a_call_* now internalerrors if pi_do_call is not yet set
  * fixed lot of missing pi_do_call's
2003-06-07 18:57:04 +00:00
peter
2df40538b9 * g_copyopenarrayvalue gets length reference
* don't copy open arrays for cdecl
2003-06-06 14:43:02 +00:00
peter
d91c880148 * cg.a_load_* get a from and to size specifier
* makeregsize only accepts newregister
  * i386 uses generic tcgnotnode,tcgunaryminus
2003-06-03 21:11:09 +00:00
Jonas Maebe
cbe4a3abd1 * fixed ref/loc problems 2003-06-03 15:49:49 +00:00
daniel
fc90d8ab4b * fixed conflict marks 2003-06-03 15:06:37 +00:00
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
Jonas Maebe
6f3e16298a * function results can now also be regvars
- removed tprocinfo.return_offset, never use it again since it's invalid
    if the result is a regvar
2003-06-02 21:42:05 +00:00