florian
e04b172854
* fixed generic optimizer
...
* enabled generic optimizer for sparc
2004-10-30 15:21:37 +00:00
peter
705868e816
* remove saveregister calling convention
2004-10-24 20:01: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
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
8fb3536f6e
* simple regvar support, not yet finished
2004-09-26 17:45:29 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
peter
3b59efea14
* keep localst in memory, it is also needed for finalizing
...
typedconst
2004-09-13 20:34:28 +00:00
armin
354004d803
* target netwlibc added (libc is preferred for newer netware versions)
2004-09-04 21:18:47 +00:00
florian
6368652be2
* fixed several sparc alignment issues
...
+ Jonas' inline node patch; non functional yet
2004-08-14 14:50:42 +00:00
Jonas Maebe
fcbc2f1313
- disable node-based inlining of routines with special array parameters
...
for now (de indexes of open arrays have to be changed, because on the
caller-side these routines are not necessarily 0-based)
2004-07-16 21:11:31 +00:00
Jonas Maebe
c7fbf7b11b
+ (incomplete) node_complexity function to assess the complexity of a
...
tree
+ support for inlining value and const parameters at the node level
(all procedures without local variables and without formal parameters
can now be inlined at the node level)
2004-07-15 19:55:39 +00:00
Jonas Maebe
1563d986c5
* inline procedures at the node tree level, but only under some very
...
limited circumstances for now (only procedures, and only if they have
no or only vs_out/vs_var parameters).
* fixed ppudump for inline procedures
* fixed ppudump for ppc
2004-07-12 09:14:04 +00:00
peter
7373a649f1
* put every proc in a new object file
2004-07-10 20:24:34 +00:00
peter
a939095dbe
* revert has_localst patch
...
* replace aktstaticsymtable/aktglobalsymtable with current_module
2004-07-09 22:17:31 +00:00
peter
60b53cb1c1
* fix storing of localst in ppu
2004-07-06 19:52: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
1bcda5c022
* first load para's to temps before calling entry code (profile
2004-05-28 21:14:13 +00:00
peter
365d6252cc
* also check local typed const
2004-05-24 17:31:12 +00:00
peter
b86f2c6a25
* methodpointer is loaded into a temp when it was a calln
2004-05-23 18:28:40 +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
florian
b5bf8cefad
+ <pointer> - <pointer> result is divided by the pointer element size now
...
this is delphi compatible as well as resulting in the expected result for p1+(p2-p1)
2004-05-20 21:54:33 +00:00
Jonas Maebe
844faab90a
* fixed web bug #3104 : if stack checking is on, procedures pi_do_call
...
must be set
2004-05-19 22:25:56 +00:00
peter
d4dcaeafaf
* fix checking for forwards in static symtable
2004-05-16 13:29:21 +00:00
peter
2824f0b208
* fix tree printing
2004-04-11 12:37:30 +00:00
florian
06a33abebd
* fixed arg. area calculation
2004-02-19 17:07:42 +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
florian
af3d31eceb
* fixed handling of max. distance of pc relative symbols
2004-01-21 19:01:03 +00:00
florian
b52cee6639
* fixed ppc inlining stuff
...
* fixed wrong unit writing
+ added some sse stuff
2003-12-21 19:42:42 +00:00
daniel
d84b7d0743
* Some work to restore the MMX capabilities
2003-12-19 22:08:44 +00:00
florian
87b24ee42c
* forgot a commit
2003-12-16 22:36:19 +00:00
florian
2258e941af
+ inlined procedures inherit procinfo flags
2003-12-16 21:29:24 +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
5090185909
* global property support for fpc modes
2003-12-10 16:37:01 +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
28ed277547
* resourcestring is allowed in the interface
2003-11-27 09:08:01 +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
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
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
684a771aca
* fix crash with fail in constructor
2003-10-31 15:52:18 +00:00
peter
9e66b09843
* call firstpass before allocation and codegeneration is started
...
* move leftover code from pass_2.generatecode() to psub
2003-10-30 16:22:40 +00:00
peter
b327c20b12
* cleanup of the entry and exit code insertion
2003-10-24 17:40:23 +00:00
peter
276688dbb4
* fixed memleak for initfinalcode
...
* exit from generatecode when there are already errors
2003-10-21 15:14:33 +00:00
peter
1becfc28b4
* disable inlining when nested procedures are found
2003-10-20 19:28:51 +00:00
florian
05fcae577a
* some ppc stuff fixed
...
* memory leak fixed
2003-10-19 01:34:30 +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
56ebcd1249
* self is not a token anymore. It is handled special when found
...
in a code block and when parsing an method
2003-10-09 15:20:56 +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
florian
6684d2c520
+ added basic olevariant support
2003-10-06 22:23:41 +00:00
peter
6edadf3df5
* more proc directive for procvar fixes
2003-10-03 14:45:09 +00:00
peter
aed5b53816
* handle_calling_convention removed from parse_proc_directive to
...
separate call
2003-10-02 21:20:32 +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
540691bf02
* optimized releasing of registers
2003-09-29 20:58:55 +00:00
peter
99bb20747e
* parent framepointer changed to hidden parameter
...
* tloadparentfpnode added
2003-09-28 17:55:03 +00:00
peter
f6868f8d48
* fix reported file position for not matched forwards
2003-09-27 13:29:43 +00:00
peter
56c14885bb
* remove allocate_intterupt_parameter, allocation is platform
...
dependent and needs to be done in create_paraloc_info
2003-09-25 21:25:13 +00:00
peter
bf66a6e4ab
* fix filepositions
...
* insert spill temp allocations at the start of the proc
2003-09-25 16:19:32 +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
f8bb9785e0
* remove obsolete code already in comments
2003-09-14 19:18:10 +00:00
peter
8dd0a4027a
* support mulitple overloads in implementation, this is delphi
...
compatible
* procsym only stores the overloads available in the interface
2003-09-14 12:58:00 +00:00
daniel
90e1ca64f3
* Fixed fast spilling functionality by re-adding the code that initializes
...
precoloured nodes to degree 255. I would like to play hangman on the one
who removed that code.
2003-09-12 19:07:42 +00:00
daniel
079751b894
* Failed attempt to restore broken fastspill functionality
2003-09-10 19:14:31 +00:00
daniel
49e539ac8d
* Adding register allocation order
2003-09-09 20:59:27 +00:00
peter
05a15df3c2
* use register with least interferences in spillregister
2003-09-09 15:55:44 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
peter
059908d399
* abort with IE when spilling requires > 20 loops
2003-09-04 14:46:12 +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
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
peter
2a5f30418e
* define NOOPT until optimizer is fixed
2003-08-20 15:50:35 +00:00
daniel
ebb1f3a361
* New register coding now mandatory, some more convert_registers calls
...
removed.
2003-08-20 09:07:00 +00:00
daniel
82b0cf41a6
* Made internal assembler use new register coding
2003-08-20 07:48:03 +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
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
Jonas Maebe
cc7f340ac8
* set pi_do_call if range/overflow checking is on
2003-07-05 20:15:24 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
d29c96896f
* fixed newra cycle for x86
...
* added constants for indicating source and destination operands of the
"move reg,reg" instruction to aasmcpu (and use those in rgobj)
2003-06-14 14:53:50 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
peter
a0b9306652
* newra compiles for sparc
2003-06-12 16:43:07 +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
e142cebe6e
* pi_do_call must always be set for the main program, since it always
...
ends with a call to FPC_DO_EXIT
2003-06-07 19:37:43 +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
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +00:00
Jonas Maebe
5a4c00bedd
* added pi_do_call if a procedure has a value shortstring parameter
...
(it's copied to the local stackframe with a helper)
2003-05-31 20:23: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
ead9de924c
* added missing initialization of rg.usedint{in,by}proc
...
* ppc now also saves/restores used fpu registers
* ncgcal doesn't add used registers to usedby/inproc anymore, except for
i386
2003-05-28 23:58:18 +00:00
peter
047a066711
* procinlinenode removed
...
* aktexit2label removed, fast exit removed
+ tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
64eb7ee2ec
* do not generate code when there was an error
2003-05-25 08:59:47 +00:00
Jonas Maebe
ce0885b092
* generate code for parent procedure before that of nested procedures as
...
well (I only need pass_1 to be done for the ppc, but pass_1 and pass_2
are grouped and it doesn't hurt that pass_2 is done as well)
2003-05-23 18:49:55 +00:00
peter
345228fd29
* defer codegeneration for nested procedures
2003-05-22 21:31:35 +00:00
Jonas Maebe
d816c6a8c6
* powerpc nested procedure fixes, should work completely now if all
...
local variables of the parent procedure are declared before the
nested procedures are declared
2003-05-16 20:00:39 +00:00
peter
abca40f041
* regvar fixes
2003-05-16 14:33:31 +00:00
peter
1a7f159fad
* only call destructor in except block when there is a destructor
...
available
2003-05-13 21:26:38 +00:00