Commit Graph

395 Commits

Author SHA1 Message Date
peter
3078a1927f * remove ttype
* rename old ttype variables *type to *def
  * rename resulttypepass to pass_typecheck
  * rename pass_2 to pass_generate_code

git-svn-id: trunk@5077 -
2006-10-29 22:19:39 +00:00
florian
02d0ac4c3e + only procedures doing recursive calls are checked for tail recursivity
+ parameters are tested if they are usable with tail recursion removal

git-svn-id: trunk@4853 -
2006-10-10 20:29:48 +00:00
florian
82b7b785f7 + TAILREC optimizer switch
git-svn-id: trunk@4849 -
2006-10-10 18:41:28 +00:00
peter
bf1c390027 * refactor import library generation
* support variable imports in internal linker

git-svn-id: trunk@4544 -
2006-09-03 19:22:31 +00:00
Jonas Maebe
7bb3a1fe22 * fixed register allocation of gen_load_para_value() and backwards
extension of regalloc info in general

git-svn-id: trunk@4293 -
2006-07-25 13:54:48 +00:00
peter
50ee3a96ad * fix importprocname for cdecl
git-svn-id: trunk@3636 -
2006-05-23 07:59:36 +00:00
peter
70e7546d87 * us cs_opt_stackframe
git-svn-id: trunk@3326 -
2006-04-23 20:53:45 +00:00
peter
ce58e15393 * fix coff section names to fix resourcestrings with
the external linker
  * create import libraries for dll imports, this uses
    the new objdata framework to generate the binary
    object files directly without needing an assembler pass
  * store import_dll and import_name in ppu
  * external linker uses import libraries
  * internal linker uses import info from symtables,
    no dlls are needed anymore

git-svn-id: trunk@3255 -
2006-04-17 20:48:22 +00:00
peter
5376d2d570 Merged revisions 3072-3073 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r3072 | peter | 2006-03-29 13:34:42 +0200 (Wed, 29 Mar 2006) | 4 lines

  * std_regname generate pair of registers for float doubles
  * don't call translate_register for regvars if -sr is passed
  * use std_regname in regalloc message

........
r3073 | peter | 2006-03-29 16:00:37 +0200 (Wed, 29 Mar 2006) | 2 lines

  * CMP instructions only read operands

........

git-svn-id: trunk@3079 -
2006-03-30 06:36:42 +00:00
peter
0ec2921bbe * split newasmsymbol to refasmsymbol and defineasmsymbol
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
peter
b7fe6797bf Merged revisions 2921-2922,2925 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines

  * pass ObjectWriter to ObjectOuput

........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines

  * refactor asmdata

........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines

  * add cfi to asmdata
  * move asmlist, asmcfi, asmdata to own unit

........

git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
peter
232555904e * symtablestack cleanup and rewrite
git-svn-id: trunk@2448 -
2006-02-05 22:24:18 +00:00
florian
d28d7e3c12 * moved insertation of pc relative data for arm target
git-svn-id: trunk@2438 -
2006-02-05 10:32:19 +00:00
florian
94038b0d83 + translate register variable locations, enables register variable debug info, with SSA it requires to be extended maintaining location list
git-svn-id: trunk@2409 -
2006-02-02 21:27:23 +00:00
peter
c297cb1569 * generate also external stubs for win32 without import section
git-svn-id: trunk@2303 -
2006-01-15 22:05:52 +00:00
peter
66f8276445 * refactor booleans in systeminfo structure, they are now flags
* support for case aware filesystems (Windows), they do now only
    one lookup if a file exists
  * add -WI option to generate import section for DLL imports or
    let the linker handle it. Default is still import section until
    the Makefiles are fixed, then the generation can be left to the
    linker

git-svn-id: trunk@2274 -
2006-01-13 15:13:26 +00:00
florian
9670e0eb78 * leave stackframe on x86-64 as well away if possible
git-svn-id: trunk@2187 -
2006-01-05 18:08:33 +00:00
Jonas Maebe
b769a968e3 * make sure live_start and live_end are correctly updated while
generating the initialisation and entry code

git-svn-id: trunk@2185 -
2006-01-05 17:46:16 +00:00
florian
1024b80867 + sub routines with children with asm blocks need a real stack frame, fixes new failure of tw0848
git-svn-id: trunk@2177 -
2006-01-05 10:10:58 +00:00
florian
a71d2b432c * synchronize reg. variables before loading the function result
git-svn-id: trunk@2163 -
2006-01-04 20:30:41 +00:00
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