Commit Graph

240 Commits

Author SHA1 Message Date
peter
35e466d971 * remove copy_value_on_stack and a_param_copy_ref 2005-01-20 17:47:01 +00:00
peter
04c97cc129 * load jmp_buf_size from system unit 2005-01-20 16:38:45 +00:00
peter
b9ca478f50 * multiple location support for i386 a_param_ref
* remove a_param_copy_ref for i386
2005-01-18 22:19:20 +00:00
Jonas Maebe
bd04491f50 * patch from Peter to fix inlining of case statements 2004-11-30 18:13:39 +00:00
florian
87b589f4f5 * better code generation for copying of open arrays 2004-11-08 21:47:39 +00:00
florian
7b8c44bbce * fixed open arrays when using register variables 2004-11-08 20:23:29 +00:00
florian
143b4a8cb1 * <signed type> to qword range check for 64 bit targets fixed 2004-11-02 17:25:36 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
d19663f3a8 * save standard registers moved to tcgobj 2004-10-25 15:36:47 +00:00
peter
705868e816 * remove saveregister calling convention 2004-10-24 20:01:08 +00:00
peter
adb6f59eef * small regvar fixes
* loadref parameter removed from concatcopy,incrrefcount,etc
2004-10-24 11:44:28 +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
8b3e00244f * length parameter for copyvaluearray changed to tlocation 2004-10-11 15:46:45 +00:00
peter
434475be33 * concatcopy_unaligned maps by default to concatcopy, sparc will
override it with call to fpc_move
2004-10-10 20:31:48 +00:00
peter
b0c25b50a0 * symtable allocation rewritten
* loading of parameters to local temps/regs cleanup
  * regvar support for parameters
  * regvar support for staticsymtable (main body)
2004-10-10 20:22:53 +00:00
peter
f5471aef6e * more spilling rewrites 2004-10-05 20:41:01 +00:00
florian
15d3388449 * fixed more sparc overflow stuff
* fixed some op64 stuff for sparc
2004-09-29 18:55:40 +00:00
florian
62f93d3473 + partial overflow checking on sparc; multiplication still missing 2004-09-26 21:04:35 +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
Jonas Maebe
f1bda1700a * support register parameters for inlined procedures + some inline
cleanups
2004-07-09 23:41:04 +00:00
peter
2240dfda57 * fix rangecheck error when assigning u32bit=s32bit 2004-07-03 11:47:04 +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
5358278ca1 tai_regalloc.allocation changed to ratype to notify rgobj of register size changes 2004-05-22 23:34:27 +00:00
daniel
b721e5872c * Prepare compiler infrastructure for multiple ansistring types 2004-04-29 19:56:36 +00:00
florian
e4f4b8acd6 * fixed web bug #3048: comparision of dyn. arrays 2004-04-18 07:52:43 +00:00
florian
10e765329d * fixed arm compilation
* cleaned up code generation for exported linux procedures
2004-03-06 20:35:19 +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
e7399ee666 * handling of float parameters passed in mm registers fixed 2004-02-20 22:16:34 +00:00
peter
ee569d7817 * make extcycle is working again 2004-02-12 15:54:03 +00:00
Jonas Maebe
3056a64bf0 * fixed regvars support. Needs -doldregvars to activate. Only tested with
ppc, other processors should however only require maxregvars and
    maxfpuregvars constants in cpubase.pas. Remember to take scratch-
    registers into account when defining that value.
2004-02-08 18:08:59 +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
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
74f5f05b6d * g_finalize needs to reset to nil after decr_ref
* support loadref in decr_ref reset to nil
2004-01-22 22:12:21 +00:00
peter
fa9e45b7cb * decrrefcount resets temps to nil 2004-01-21 22:13:20 +00:00
peter
ac1332a388 * fixed stackchecking for register calling 2004-01-21 21:01:34 +00:00
florian
c37035a450 * common addnode code for x86-64 and i386 2004-01-20 12:59:36 +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
daniel
4a4b8f2a72 * Experiment: Compress strings to save memory
Did not save a single byte of mem; clearly the core size is boosted by
    temporary memory usage...
2004-01-11 23:56:19 +00:00
peter
1c7e6fc380 * sparc updates
* use registertype in spill_register
2003-12-26 14:02:30 +00:00
florian
ace2d682b0 * rtl and compiler compile with -Cfsse2 2003-12-26 13:19:16 +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
florian
b52cee6639 * fixed ppc inlining stuff
* fixed wrong unit writing
  + added some sse stuff
2003-12-21 19:42:42 +00:00
florian
f041463abf * improved register allocation of generic a_param_const and a_param_ref 2003-12-15 21:39:39 +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
bce5a1e252 * rg[tregistertype] added in tcg 2003-12-12 17:16:17 +00:00
Jonas Maebe
062e03528e + allocate volatile registers around calls to procedures declared with
"saveregisters" on non-x86 processors
2003-12-06 22:11:47 +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
788339336a * elesize of g_copyvaluepara_openarray changed
+ g_releaesvaluepara_openarray added
2003-11-05 23:05:13 +00:00
florian
05fcae577a * some ppc stuff fixed
* memory leak fixed
2003-10-19 01:34:30 +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
947280d8e2 * some ideas for mm support implemented 2003-10-13 01:23:13 +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
99bb20747e * parent framepointer changed to hidden parameter
* tloadparentfpnode added
2003-09-28 17:55:03 +00:00
peter
e248f1b570 * a_call_ref removed 2003-09-28 13:37:19 +00:00
peter
e7a50f0ee0 * remove obsolete tparalocation.sp_fixup 2003-09-25 21:26:24 +00:00
peter
56ece89fe5 * fpc_check_object(_ext) has saveregisters and doesn't need
saving of registers
2003-09-23 20:37:16 +00:00
marco
cd5ae5fcc3 * Patch from Peter for paraloc 2003-09-10 08:31:47 +00:00
daniel
49e539ac8d * Adding register allocation order 2003-09-09 20:59:27 +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
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
Jonas Maebe
355f84758e * several rg.allocexplicitregistersint/rg.deallocexplicitregistersint
pairs round calls to helpers
2003-07-23 11:01:14 +00:00
peter
32d076480b * framepointer fixes for sparc
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
peter
b7d99ec934 * paraloc splitted in callerparaloc,calleeparaloc
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
peter
d179aea20d * ungetregisterfpu gets size parameter 2003-06-12 21:11:10 +00:00
peter
a0b9306652 * newra compiles for sparc 2003-06-12 16:43:07 +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
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
peter
230a14ff68 * getregisterfpu size parameter added
* op_const_reg size parameter added
  * sparc updates
2003-06-01 21:38:06 +00:00
peter
948ef20ecc * generic a_call_ref 2003-06-01 01:02:39 +00:00
peter
414bd5fa22 * more sparc cleanup
* accumulator removed, splitted in function_return_reg (called) and
    function_result_reg (caller)
2003-05-30 23:57:08 +00:00
Jonas Maebe
e7e2cfe9a4 * a_load_loc_reg now has an extra size parameter for the destination
register (properly fixes what I worked around in revision 1.106 of
    ncgutil.pas)
2003-05-30 23:49:18 +00:00
Jonas Maebe
0c717891ff * fixed bug in a_load_loc_ref (the source instead of dest size was passed
to a_load_reg_ref in case of a register)
2003-05-30 21:40:00 +00:00
Jonas Maebe
f433c21ead * use as little different registers on the ppc until newra is released,
since every used register must be saved
2003-05-30 12:36:13 +00:00
peter
8ff5792776 * remove some unit dependencies
* current_procinfo changes to store more info
2003-05-23 14:27:35 +00:00
peter
92ee1804b6 * removed selfpointer_offset, vmtpointer_offset
* tvarsym.adjusted_address
  * address in localsymtable is now in the real direction
  * removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
05c05f2555 * failn removed
* inherited result code check moven to pexpr
2003-05-13 19:14:41 +00:00
peter
26d78ff5c9 * moved implicit exception frame from ncgutil to psub
* constructor/destructor helpers moved from cobj/ncgutil to psub
2003-05-11 21:37:03 +00:00
peter
1a2eedd767 * self moved to hidden parameter
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
Jonas Maebe
376b1ffa17 * fix for op_reg_reg_reg in case the destination is the same as the first
source register
2003-05-01 12:23:46 +00:00
michael
cf68b27bb9 + Patch from peter to fix wrong pushing of ansistring function results in open array 2003-04-29 07:28:52 +00:00
peter
60978ba89c * aktprocdef renamed to current_procdef
* procinfo renamed to current_procinfo
  * procinfo will now be stored in current_module so it can be
    cleaned up properly
  * gen_main_procsym changed to create_main_proc and release_main_proc
    to also generate a tprocinfo structure
  * fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66 * aktprocdef cleanup, aktprocdef is now always nil when parsing
a new procdef declaration
  * aktprocsym removed
  * lexlevel removed, use symtable.symtablelevel instead
  * implicit init/final code uses the normal genentry/genexit
  * funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00