Commit Graph

374 Commits

Author SHA1 Message Date
florian
f7d2c47f73 + no stackframe is generated for i386 if possible
git-svn-id: trunk@2162 -
2006-01-04 19:19:06 +00:00
florian
30d5ff9f03 * fixed access to already freed memory location
git-svn-id: trunk@2118 -
2006-01-02 17:11:55 +00:00
florian
fb4557d71e * first implementation of pic for i386
git-svn-id: trunk@2107 -
2006-01-01 20:14:48 +00:00
Jonas Maebe
55218d452b * don't change the binding of real external symbols in the patch
of r2058, fixes the binary writer

git-svn-id: trunk@2060 -
2005-12-27 09:41:52 +00:00
Jonas Maebe
de8dbbd2c4 * final fixes for Mac OS X shared library creation: procedures declared
as forward are no longer treated as external symbols
  * changed alloc_proc_symbol() to directly call newasmsymbol as opposed
    to creating a dummy tai_symbol()

git-svn-id: trunk@2058 -
2005-12-26 18:18:05 +00:00
Jonas Maebe
dbf94f4713 * properly fixed allocating procedure symbols, now also works for nested
procedures

git-svn-id: trunk@2029 -
2005-12-22 20:43:29 +00:00
peter
95879fe8a7 * basic support for generic classes
git-svn-id: trunk@2020 -
2005-12-21 10:11:15 +00:00
Jonas Maebe
b954ea006e * generate the procsymbol before generating the code for the procedure,
so that refences to this symbol are not treated as external

git-svn-id: trunk@2009 -
2005-12-20 17:52:08 +00:00
florian
ca921976f6 * when creating pic code, every procedure must be declared being global
git-svn-id: trunk@1733 -
2005-11-13 18:08:49 +00:00
florian
e1b34a9e7b * cleaning up sets for exports behaviour
+ allow exports from units

git-svn-id: trunk@1535 -
2005-10-19 19:06:45 +00:00
Jonas Maebe
810ec85e34 - disable inlining for procedures with a formal const parameter, fixes
webtbs/tw4427

git-svn-id: trunk@1390 -
2005-10-15 20:48:35 +00:00
peter
51b8a4a132 * move stabs generation to a single procedure call from pmodules
git-svn-id: trunk@1358 -
2005-10-12 10:35:46 +00:00
tom_at_work
bfb2c916dc * fixed problem with too large offsets in conditional jumps (see also rev 1161 for the PowerPC code)
* updated sysnr.inc for PowerPC64 from 2.6.11 kernel sources
* fixed SigactionRec sa_flags field sizes, which improves signal handling for PowerPC64 platform

git-svn-id: trunk@1352 -
2005-10-10 23:45:57 +00:00
tom_at_work
b2e1cf2610 * powerpc64 port now (manually) cycles, most test programs in tests/test are fine too
* fixed bug in ncal.pas which in some circumstances treated the hidden length parameter for open arrays as 32 bit integer

git-svn-id: trunk@1303 -
2005-10-05 21:55:25 +00:00
peter
89297d2c39 * move all stabs ($ifdef gdb) code to dbgstabs
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
Jonas Maebe
8b8d3de3bf * finally fix for fixing up conditional jumps that are too long
git-svn-id: trunk@1161 -
2005-09-23 10:02:53 +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
peter
ca66b9f7c1 * force writing of new section before generating the jumptable
git-svn-id: trunk@1085 -
2005-09-15 14:08:02 +00:00
peter
c3727c29b2 * rename al_code to al_procedures, al_bss/al_data to al_globals
* more work for section smartlinking

git-svn-id: trunk@1083 -
2005-09-15 06:51:12 +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
florian
a3e330526d * exporting of symbols from linux programs, i.e. exports clause in
programs allowed

git-svn-id: trunk@855 -
2005-08-13 20:34:28 +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
Jonas Maebe
8bc4e0a32f * inline and compilerproc are now procoptions instead of proccall types
(so both can be combined with each other, as well as with other calling
     conventions)
  * defined COMPPROCINLINEFIXED so SYSTEMINLINE is again activated

git-svn-id: trunk@658 -
2005-07-18 15:27:14 +00:00
florian
83c6b3aca2 * from Yury Sidorov:
+ Added new target WinCE for i386 (to be able compile and run programs in WinCE emulator)

git-svn-id: trunk@596 -
2005-07-09 09:31:57 +00:00
florian
c2fe9e3814 + compiler part of WinCE patches from Yuri Sidorov
git-svn-id: trunk@573 -
2005-07-03 15:52:54 +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
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
720815e13b * fix aftercosntruction calls, vmt=1 is used to indicate that
afterconstruction needs to be called
  * only accept resourcestring when objpas is loaded
2005-01-04 16:36:31 +00:00
peter
296e81146e * insert stack_check helper call before doing register allocation
so the used registers can't be reused when parameters are loaded
    into register variables
2005-01-03 22:27:56 +00:00
peter
2a20174317 * set flag if a procedure references a symbol in staticsymtable 2004-12-27 16:35:48 +00:00
Jonas Maebe
99cffcc375 - disable inlining for any procedure that contains assembler. Could
be enabled again if the procedure has neither local variables nor
    parameters.
2004-12-27 14:41:09 +00:00
peter
29db12ecfa * disable inlining across units when the inline procedure references
a variable or procedure in the static symtable
2004-12-15 21:08:15 +00:00
peter
9e49f8eef9 * fixed crash with -vp 2004-12-15 17:01:28 +00:00
peter
00c14e1083 * external is again allowed in implementation 2004-12-15 16:00:16 +00:00
peter
2b6456fe16 * procvar handling for tp procvar mode fixed
* proc to procvar moved from addrnode to typeconvnode
  * inlininginfo is now allocated only for inline routines that
    can be inlined, introduced a new flag po_has_inlining_info
2004-12-05 12:28:10 +00:00
peter
959bdccc49 * disable pass2inline 2004-12-02 19:26:14 +00:00
peter
06cfe01791 * os2 fixes for import
* asmsymtype support for intel reader
2004-11-29 18:50:15 +00:00
florian
18f7aa97dd * changed funcret location back to tlocation 2004-11-21 17:17:03 +00:00
michael
180966c0aa * Split po_public into po_public and po_global (Peter) 2004-11-19 08:17:01 +00:00
peter
14d25d278b mangledname setting moved to place after the complete proc declaration is read
import generation moved to place where body is also parsed (still gives problems with win32)
2004-11-17 22:21:35 +00:00
peter
87d2861f89 * fixes for win32 mangledname 2004-11-16 20:32:40 +00:00
peter
e740a66636 * tparaitem removed, use tparavarsym instead
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
6458bd0ce1 * tvarsym splitted 2004-11-08 22:09:58 +00:00
peter
2e161c5e9e * nf_internal flag for internal inserted typeconvs. This will
supress the generation of warning/hints
2004-11-02 12:55:16 +00:00
peter
bc59556a41 * $fpctarget expands to <cpu>-<os>
* allow * in middle of the path to support ../*/units/$fpctarget
2004-10-31 18:54:24 +00:00
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