Commit Graph

474 Commits

Author SHA1 Message Date
Jonas Maebe
5fde39cd69 * reinstated trashing of out parameters with -gt (see mantis 8216,
fix for the compiler was in symtable.pas)

git-svn-id: trunk@6198 -
2007-01-26 10:26:35 +00:00
Jonas Maebe
879a1594e1 * don't trash out parameters, because the caller may expect them to be
unchanged in case the callee doesn't touch them (e.g. srdef in pexpr.pas)
  * extra safety to not trash any typed constants and initialised variables

git-svn-id: trunk@6184 -
2007-01-25 15:11:23 +00:00
Jonas Maebe
14a95ccdc3 * fixed r6149
git-svn-id: trunk@6157 -
2007-01-24 09:33:34 +00:00
Jonas Maebe
fcb128c66c * don't trash reference counted types with -gt (mantis 8183)
git-svn-id: trunk@6149 -
2007-01-23 16:49:59 +00:00
florian
5c74d8078a * take result register size from funcretloc
git-svn-id: trunk@6116 -
2007-01-21 22:55:35 +00:00
Jonas Maebe
b951947b64 * partially fixed Delphi compatibility for assembler procedures: in case
only parameters on the stack are passed and if the function result is
    not referenced, don't allocate a stackframe. Fixes mantis 8155, but
    see that bug report for other rules (there's one error there: Delphi
    *does* allocate a function result for non-string/variant/interface
    if @result is referenced)

git-svn-id: trunk@6102 -
2007-01-21 16:53:59 +00:00
peter
323fc850b9 * fixed duplicate alias check
git-svn-id: trunk@6003 -
2007-01-16 18:31:27 +00:00
peter
c9703d43d5 * check also procedure aliases for duplicate names when
generating an export stub

git-svn-id: trunk@5993 -
2007-01-15 17:45:37 +00:00
Jonas Maebe
e815b923d5 * a_loadfpu_* gets two size parameters: fromsize and tosize
* fixed downsizing the precision of floating point values
  * floating point constants are now treated using only the minimal
    precision required (e.g. 2.0 is now a single, 1.1 extended etc)
    (Delphi compatible)

git-svn-id: trunk@5927 -
2007-01-12 18:33:51 +00:00
Jonas Maebe
1d96dcc50d * renamed nf_swaped to nf_swapped
git-svn-id: trunk@5818 -
2007-01-05 12:47:22 +00:00
Jonas Maebe
003a23c748 * fixed loc_mmregister bug in r4611
git-svn-id: trunk@5816 -
2007-01-05 12:25:05 +00:00
florian
4c2b412613 * x86_64-win64 returns structured types up to 8 bytes in rax
git-svn-id: trunk@5528 -
2006-12-02 15:36:32 +00:00
yury
319d92fe9a * Release register of by value parameter after making its local copy. It fixes bug when local stack location is referenced using big (>4k) PC relative offset by ARM CPU. In this case temp register is needed and wrong temp register is allocated.
git-svn-id: trunk@5488 -
2006-11-26 14:42:17 +00:00
peter
0557ddc342 * removed typed const, it is now handled by staticvarsym
* globalvarsym renamed to staticvarsym
  * fixed invalid regvar use in init when the finalize also uses the var

git-svn-id: trunk@5290 -
2006-11-08 21:04:22 +00:00
peter
f2a25e845d * refactor gen_alloc_symtable so it depends on varsym type and not
on symtabletype

git-svn-id: trunk@5259 -
2006-11-05 21:53:40 +00:00
peter
3cae449fda * moved rtti to ncgrtti
git-svn-id: trunk@5219 -
2006-11-04 10:43:27 +00:00
peter
e17b424e28 * refactor procsym procdef list
git-svn-id: trunk@5210 -
2006-11-03 18:44:46 +00:00
peter
658c46b903 * remove tdictionary and tindexarray
* symtables based on TFPHashObjectList and TFPObjectList
  * rename torddef.typ to torddef.ordtype
  * rename tfloatdef.typ to tfloatdef.floattype
  * rename tdef.deftype to tdef.typ
  * remove obsolete browser code, browcol is kept so the ide
    can still be compiled

git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
Jonas Maebe
aa65525fff * fixed incompatibility between -gt and openstring (and faked open strings
like the result of fpc_ansistr_to_shortstr)

git-svn-id: trunk@5140 -
2006-11-01 01:03:10 +00:00
peter
136d3e8d46 * refactor implemented interfaces
git-svn-id: trunk@5134 -
2006-10-31 22:38:49 +00:00
florian
ef7bd58c54 * germanism removed (aktfilepos -> current_filepos)
git-svn-id: trunk@5099 -
2006-10-30 22:37:31 +00:00
florian
85d63d9fa9 * settings refactored
git-svn-id: trunk@5094 -
2006-10-30 18:02:58 +00:00
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
9a1b9071a5 * implemented kylix like local directive, fixes #7242
git-svn-id: trunk@4982 -
2006-10-19 20:26:14 +00:00
florian
fb5e396881 + experimental -Sv option to support vector arithmetics
git-svn-id: trunk@4825 -
2006-10-07 21:39:48 +00:00
florian
67ba76f090 * several arm fixes
git-svn-id: trunk@4742 -
2006-09-27 21:05:05 +00:00
Jonas Maebe
7528a28287 * keep track of a sym's initial location to use during the generation
of init code

git-svn-id: trunk@4611 -
2006-09-11 18:55:40 +00:00
Jonas Maebe
8637bddf72 * initialize full 64 bit of 64 bit static/global register variables
git-svn-id: trunk@4610 -
2006-09-11 12:33:13 +00:00
Jonas Maebe
6997121c18 * also perform "SSA" for certain loads (currently derefn, righthand side of
assignmentn and callparan), reduces number of long lived conflicts.
    Mainly helpful on register-starved cpus such as i386.

git-svn-id: trunk@4606 -
2006-09-10 16:21:50 +00:00
florian
d4d4d03b3b * correct handling of result register allocation of exception helpers
git-svn-id: trunk@4522 -
2006-08-31 14:53:20 +00:00
Jonas Maebe
1f42ee201b + support for bitpacked records, except for:
* rtti
    * typed constants

git-svn-id: trunk@4489 -
2006-08-23 15:44:13 +00:00
Jonas Maebe
eccbc78e04 + support for bitpacked arrays:
+ use {$bitpacking on/+} to change the meaning of "packed"
      into "bitpacked" for arrays. This is the default for MacPas.
      You can also define individual arrays as "bitpacked", but
      this is not encouraged since this keyword is not known by
      other compilers and therefore makes your code unportable.
    + pack(unpackedarray,index,packedarray) to pack
      length(packedarray) elements starting at
      unpackedarray[index] into packedarray.
    + unpack(packedarray,unpackedarray,index) to unpack
      packedarray into unpackedarray, with the first
      element being stored at unpackedarray[index]
  * todo:
    * "open packed arrays" and rtti for packed arrays are not
      yet supported
    * gdb does not properly support bitpacked arrays

git-svn-id: trunk@4449 -
2006-08-19 12:54:12 +00:00
Jonas Maebe
ac2189cb71 * -gt now also trashes function results passed by reference
(i.e., complex function results)

git-svn-id: trunk@4422 -
2006-08-14 11:48:45 +00:00
Jonas Maebe
c25aba7592 * cleaned up subsetreg support (put everything in a record)
* prepared support for elements with arbitrary bit length (as opposed
    to a multiple of 8)

git-svn-id: trunk@4324 -
2006-08-01 20:39:53 +00:00
tom_at_work
65503f5786 * on 64 bit machines load 64 bit "trash constants" directly as well
git-svn-id: trunk@4297 -
2006-07-25 20:35:13 +00:00
Jonas Maebe
f5a902b2ee * fixed register allocation for -gt
+ also trash "out" parameters with -gt (except open arrays)

git-svn-id: trunk@4294 -
2006-07-25 14:04:05 +00:00
Jonas Maebe
5f699c7838 + -gt, -gtt, -gttt and -gtttt switches to trash local variables with
different values (resp. $55, $AA, $EF and $00) in function/procedure
    prologs to help find uninitialized uses. Should still be extended
    for "out" parameters.

git-svn-id: trunk@4271 -
2006-07-20 22:54:23 +00:00
Jonas Maebe
df973fa1de * fixed issue #6977 (add regvars occupied by the invisible high parameter
of "open array" and "array of const" parameters to the used regvars
    for their array accesses if range checking is turned on)

git-svn-id: trunk@3914 -
2006-06-21 18:24:01 +00:00
florian
9b54dcc781 * fixed compilation on non x86 CPUs
git-svn-id: trunk@3715 -
2006-05-28 12:02:10 +00:00
florian
24ab8e0177 * create proper external stubs in case of generating pic
git-svn-id: trunk@3713 -
2006-05-28 09:23:53 +00:00
Jonas Maebe
e531c4f125 + very limited SSA support (only outside control flow
constructs for now)

git-svn-id: trunk@3671 -
2006-05-25 11:45:08 +00:00
Jonas Maebe
e344ee3cd7 + support for register variables which contain records
git-svn-id: trunk@3580 -
2006-05-19 15:49:07 +00:00
Jonas Maebe
e0250bcdb4 * never remove regvar-ability of parameters passed by reference
(previously worked only for var/out, now also for const and
     is more generic)

git-svn-id: trunk@3554 -
2006-05-17 13:38:02 +00:00
florian
13493a5355 * fixed copying of unaligned value parameters
git-svn-id: trunk@3369 -
2006-04-29 20:13:57 +00:00
tom_at_work
3f2f694d48 * per-parameter alignment set in target specific paramanager now overrides default alignment of parameter locals
git-svn-id: trunk@3272 -
2006-04-18 14:32:42 +00:00
tom_at_work
7a068de50a * removed misleading non-working automatic save/restore of registers for profiling code (must be done manually in tcg.g_profilecode)
git-svn-id: trunk@3269 -
2006-04-18 09:59:12 +00:00
peter
efe41b0766 * fixed section smartlinking with ld.exe
* reference debugstart and debugend sections

git-svn-id: trunk@3127 -
2006-04-02 20:18:38 +00:00
peter
0ec2921bbe * split newasmsymbol to refasmsymbol and defineasmsymbol
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
Jonas Maebe
1e3137c315 * load a dummy value on the fpu stack in the epilog of functions
which return a real but which never assigned anything to the function
    result (since the caller will pop it off again) (x86-only, bug #4902)

git-svn-id: trunk@3016 -
2006-03-22 21:32:48 +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
17bc033747 Merged revisions 2791-2793,2798-2800,2806-2825,2829-2830,2833,2839,2898 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2791 | peter | 2006-03-06 14:57:20 +0100 (Mon, 06 Mar 2006) | 3 lines

  * disable internal linker if -s is used
  * enable section smartlink by default for internal linker

........
r2792 | peter | 2006-03-06 14:58:23 +0100 (Mon, 06 Mar 2006) | 2 lines

  * support long sectionnames

........
r2793 | peter | 2006-03-06 15:04:12 +0100 (Mon, 06 Mar 2006) | 2 lines

  * register symbols in section also when reading .o files

........
r2798 | peter | 2006-03-07 10:08:07 +0100 (Tue, 07 Mar 2006) | 2 lines

  * symbolrefs need to be loaded from relocations when loading a .o

........
r2799 | peter | 2006-03-07 16:17:52 +0100 (Tue, 07 Mar 2006) | 3 lines

  * remove unreferenced sections
  * set stacksize in peopthaeder

........
r2800 | peter | 2006-03-07 17:02:46 +0100 (Tue, 07 Mar 2006) | 2 lines

  * objsection.fullname added

........
........
r2807 | peter | 2006-03-08 08:18:04 +0100 (Wed, 08 Mar 2006) | 2 lines

  * powerpc64 fixes

........
r2808 | peter | 2006-03-08 08:35:53 +0100 (Wed, 08 Mar 2006) | 2 lines

  * register x86_64_pecoff

........
r2809 | peter | 2006-03-08 11:26:38 +0100 (Wed, 08 Mar 2006) | 2 lines

  * optimize and cleanup matches()

........
r2810 | peter | 2006-03-08 12:25:28 +0100 (Wed, 08 Mar 2006) | 2 lines

  * small tweak to readdata to copy values direct without calling move()

........
r2811 | peter | 2006-03-08 15:55:21 +0100 (Wed, 08 Mar 2006) | 2 lines

  * compile fix

........
........
........
........
........
........
r2817 | peter | 2006-03-09 14:20:52 +0100 (Thu, 09 Mar 2006) | 2 lines

  * more readable with long secnames

........
........
........
........
........
........
........
........
r2825 | peter | 2006-03-10 09:52:05 +0100 (Fri, 10 Mar 2006) | 2 lines

  * don't initialize/finalize external variables

........
r2829 | peter | 2006-03-10 10:58:08 +0100 (Fri, 10 Mar 2006) | 2 lines

  * merge 64bit assembler

........
r2830 | peter | 2006-03-10 12:25:08 +0100 (Fri, 10 Mar 2006) | 2 lines

  * TElfAssembler rename

........
r2833 | peter | 2006-03-10 15:22:27 +0100 (Fri, 10 Mar 2006) | 3 lines

  * support & prefix to force identifier parsing, used to access fields that
    have the names of a register

........
r2839 | peter | 2006-03-10 19:37:11 +0100 (Fri, 10 Mar 2006) | 2 lines

  * merge stabs section flags

........
r2898 | peter | 2006-03-12 23:18:18 +0100 (Sun, 12 Mar 2006) | 2 lines

  * reorder instructions for better first match

........

git-svn-id: trunk@2902 -
2006-03-13 09:29:57 +00:00
peter
b6e35a200e * rewrite of optimizer options
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
5f0f08dd18 * fixed calling cdecl functions which return a large record with
use_fixed_stack on i386

git-svn-id: trunk@2872 -
2006-03-11 22:12:20 +00:00
Jonas Maebe
8ef01e93c1 * another use_fixed_stack fix
git-svn-id: trunk@2865 -
2006-03-11 20:48:58 +00:00
Jonas Maebe
a90e3b3e1d * fixed argc/argv/envp catching for darwin/x86 (not really nice, but
works)

git-svn-id: trunk@2848 -
2006-03-10 23:45:37 +00:00
Jonas Maebe
fad5d59bd9 * turned {$ifdef cputargethasfixedstack} into "if use_fixed_stack"
* fixed i386 parameter passing of function calls nested in parameters
    of functions which also need the stack to pass poarameters

git-svn-id: trunk@2847 -
2006-03-10 23:44:04 +00:00
peter
785550d7e3 Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines

  * add compiler dir

........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines

  * enabled more code

........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines

  * pe stub and headers

........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines

  * section options cleanup

........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines

  * fixed typecasts

........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines

  * simple linking works

........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines

  * internal linker script

........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines

  * make elf working again

........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines

  * disable dwarf for smartlinking with .a
  * fix section start in new .a file

........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines

  * stab section fixes

........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines

  * basic work to merge stabs sections

........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload tmodules before linking

........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines

  * fixed stabs linking

........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines

  * show code and data size

........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload .stabs from objdata after it is merged

........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines

  * memsize/datasize cleanup
  * check for exports/resources when adding module to linker

........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines

  * new TObjSymbol splitted from TAsmSymbol

........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines

  * coff fixes after recent objsymbol changes

........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines

  * fixed coff writer

........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines

  * fix read-only opening

........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines

  * Read edata from DLLs, basic work

........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines

  * deletedef added
  * don't remove defs from index when we are already clearing everything

........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines

  * moved TObj classes to ogbase
  * ObjSection.SymbolRefs and SymbolDefines list
  * DLL importing

........

git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
florian
79795d65b5 * fixed previous commit
git-svn-id: trunk@2763 -
2006-03-05 18:57:36 +00:00
florian
6952e63222 * test vmt only for classes and objects
git-svn-id: trunk@2762 -
2006-03-05 18:33:45 +00:00
peter
6142edaed0 * init regallocator before generating intf wrappers
git-svn-id: trunk@2641 -
2006-02-20 07:00:38 +00:00
Jonas Maebe
c5243db965 + more darwin i386 support
git-svn-id: trunk@2596 -
2006-02-15 16:31:05 +00:00
Jonas Maebe
2634176ed8 * don't include the compiler's ident in stabs for main and put it
back in the data section

git-svn-id: trunk@2568 -
2006-02-14 15:35:24 +00:00
Jonas Maebe
2435a7a93c * finalization sections in shared libraries under Darwin are now run
* cleaned up the way the initialisation sections of shared libraries
    under Darwin are run

git-svn-id: trunk@2470 -
2006-02-07 14:29:58 +00:00
peter
232555904e * symtablestack cleanup and rewrite
git-svn-id: trunk@2448 -
2006-02-05 22:24:18 +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
Jonas Maebe
46c0fc3e7c * fixed patch of r2313 (unit init code was not called anymore for
libraries)

git-svn-id: trunk@2334 -
2006-01-25 16:52:32 +00:00
Jonas Maebe
2ef0f67ebb * don't call parameter setup code for library init code (darwin/mac os)
git-svn-id: trunk@2313 -
2006-01-20 22:00:15 +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
Jonas Maebe
e4451558c4 * optimized register allocation for tempnodes
git-svn-id: trunk@2221 -
2006-01-08 12:53:43 +00:00
Jonas Maebe
c54826b403 * removed extra deallocation and allocation of function result
registers, allows for most optimal code possible to be generated
    for trivial functions (but in some cases worsens generated code
    because the register allocator is not 100% optimal)

git-svn-id: trunk@2208 -
2006-01-07 16:19:19 +00:00
Jonas Maebe
ac24965242 * procedures which use goto/label revert to the older and less
efficient regvar allocation scheme
  * also allocate regvars before the loops, not just afterwards

git-svn-id: trunk@2192 -
2006-01-05 23:45:00 +00:00
Jonas Maebe
61ef30381c * Only synchronise regvars after a loop (and only those regvars
which are used in the loop). The compiler makes now much
    more efficient use of registers for register variables (and
    different regvars can now also share the same register if
    their live range does not overlap)

git-svn-id: trunk@2186 -
2006-01-05 17:48:11 +00:00
Jonas Maebe
fe71df8928 * also synchronise FPU and MM CREGISTERS at the end of procedures
git-svn-id: trunk@2178 -
2006-01-05 10:24:14 +00:00
florian
abc1bcca24 * fixed previous commit ...
git-svn-id: trunk@2175 -
2006-01-05 09:40:04 +00:00
tom_at_work
3462426b1d * stack frame optimizations
git-svn-id: trunk@2172 -
2006-01-04 23:27:40 +00:00
florian
61e3b70cfa * cleaned up segmented thread variables
git-svn-id: trunk@2135 -
2006-01-03 12:49:29 +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
9603f4bf82 * fixed double writing of "<var> located in register" in assembler
source after previous patch

git-svn-id: trunk@2104 -
2006-01-01 15:36:42 +00:00
Jonas Maebe
018fa207d7 * only allocate the calleeside register locations of parameters when
needed, avoids some unnecessary register conflicts (not yet perfect
    for 64bit locations on 32bit cpus)

git-svn-id: trunk@2089 -
2005-12-31 12:28:56 +00:00
Jonas Maebe
c423e23bb4 * only use r12 as frame pointer in the entry code for ppc if necessary
git-svn-id: trunk@2086 -
2005-12-31 10:54:09 +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
Jonas Maebe
66ebbbc5c2 * always generate code which can be used to build dynamically loadable
libraries with

git-svn-id: trunk@2013 -
2005-12-20 19:58:27 +00:00
tom_at_work
b53ee04f98 * base compiler patches to improve C parameter passing compatibility on powerpc64/linux
git-svn-id: trunk@1983 -
2005-12-18 22:07:24 +00:00
florian
3f2f8609e3 + check vmt when loading one, fixes tw2318b
git-svn-id: trunk@1660 -
2005-11-05 16:29:13 +00:00
tom_at_work
c5f89d7efd * release old stack pointer register on ppc64 after method prolog
* threading fixes for ppc64
* fixed a_param_ref to respect the size parameter on ppc64
* better stack size calculation for ppc64

git-svn-id: trunk@1599 -
2005-10-26 19:50:17 +00:00
Jonas Maebe
00b612502e * fixed web bug #4228 (support loading int64 paras passed on the stack into
local regvars)

git-svn-id: trunk@1380 -
2005-10-15 16:03:00 +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
peter
89297d2c39 * move all stabs ($ifdef gdb) code to dbgstabs
git-svn-id: trunk@1255 -
2005-10-02 11:17:05 +00:00
peter
ec4d287fd8 * aktoutputformat removed, add new paraXX vars for target
assembler and debuginfo and use these vars to override
    the defaults for the target after the parameters are read
  * remove not-maintained and tested gdb code

git-svn-id: trunk@1201 -
2005-09-25 21:17:37 +00:00
peter
a720145fd1 * remove obsolete pass2inline code
git-svn-id: trunk@1198 -
2005-09-25 20:02:17 +00:00
peter
2f0fdd1847 * cleaner fix for tb0496 (r1185)
git-svn-id: trunk@1196 -
2005-09-25 19:23:37 +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
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
olle
32fac59ac5 made target macpas compile again
git-svn-id: trunk@1077 -
2005-09-12 19:39:58 +00:00
peter
35ac5f133e * win32 profiling updates
git-svn-id: trunk@1059 -
2005-09-07 08:32:33 +00:00
Jonas Maebe
3aa4e8008e * fixed tests/webtbs/uw3969 compilation with -Or for ppc (removed
superfluous call to location_get_data_ref)

git-svn-id: trunk@926 -
2005-08-23 06:39:31 +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
daniel
e98865ab40 * Fixes and further development of fast threadvars
git-svn-id: trunk@743 -
2005-07-25 14:07:02 +00:00
daniel
22e89e1a42 * Proof of concept: Support threadvars using segment registers.
git-svn-id: trunk@740 -
2005-07-24 21:06:23 +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
Jonas Maebe
37fcf95f90 (belongs together with r503)
* the 'main' procedure for darwin is now placed in the main program instead
  of in the system unit
+ ability to rename this 'main' symbol (-XM<x>, e.g. -XMSDL_main for SDL), for
  all OS'es
+ mention the -Xm parameter in the help

git-svn-id: trunk@541 -
2005-06-30 09:01:44 +00:00
florian
cf2c0d52e3 * initialisation of global mm register variables
git-svn-id: trunk@206 -
2005-06-05 10:40:20 +00:00
florian
355aaa69c8 + before calling a helper procedure, all register classes are now saved, this patch is subject to being merged back
git-svn-id: trunk@201 -
2005-06-05 08:12:33 +00:00
florian
ebcb69478f * fixed a lot of stuff for fpu/mm register variables
git-svn-id: trunk@199 -
2005-06-04 21:23:15 +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
12283206d1 named sections for intf wrappers 2005-03-28 13:10:22 +00:00
Jonas Maebe
a5c94ddccd * removed some unused variables 2005-03-25 21:55:43 +00:00
peter
96d7cbeddc put intf wrappers in code section 2005-03-09 22:37:24 +00:00
Jonas Maebe
ac931f6846 * use expectloc in firstcomplex() 2005-03-02 19:44:11 +00:00
peter
5edffaf371 * remove is_single_reference
* revert loading of ref-to-ref para valu
2005-02-15 21:39:48 +00:00
peter
dd0664156d * fix passing of 64bit values when using -Or 2005-02-15 19:16:04 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
Jonas Maebe
2e944b3b71 * fixed darwin cycle 2005-01-30 21:51:57 +00:00
peter
e820bc93f2 * interface wrapper generation moved to cgobj
* generate interface wrappers after the module is parsed
2005-01-24 22:08:32 +00:00
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
florian
4647e2e720 * init./final code isn't created for pure assembler procedures anymore 2005-01-19 20:04:46 +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
20361e7eb8 + support LOC_VOID in gen_load_para_value() 2005-01-13 19:31:05 +00:00
Jonas Maebe
9c22d594b0 + support for passing records in registers under darwin
* tcgpara now also has an intsize field, which contains the size in
    bytes of the whole parameter
2005-01-10 21:50:05 +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
00c14e1083 * external is again allowed in implementation 2004-12-15 16:00:16 +00:00
Jonas Maebe
fcf16c4983 * fixed synchronising 64bit regvars on 32bit systems at the start and
end of procedures
  * hack for ppc for loading of paras from their callee location to local
    temps
2004-12-11 12:42:28 +00:00
Jonas Maebe
7c9d8d8872 * fixed int64 regvar bug in location_force_register 2004-12-11 01:03:01 +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
36268edfed * fix for int64 parameters passed in a single LOC_REFERENCE of 8 bytes 2004-12-03 16:06:31 +00:00
peter
a29eab36c7 * fixed funcretloc for sparc 2004-11-21 18:13:31 +00:00
peter
89b1b583c9 * ttempcreatenode.create_reg merged into .create with parameter
whether a register is allowed
  * funcret_paraloc renamed to funcretloc
2004-11-21 17:54:59 +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
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
0c7e53bb81 * fixed compile of powerpc,sparc,arm 2004-11-11 19:31:33 +00:00
peter
7c0b6e129e * fixed wrong typecasts 2004-11-09 17:26:47 +00:00
peter
6458bd0ce1 * tvarsym splitted 2004-11-08 22:09:58 +00:00
florian
7b8c44bbce * fixed open arrays when using register variables 2004-11-08 20:23:29 +00:00
peter
79e754cb8c forgot if cs_debuginfo 2004-11-04 17:12:24 +00:00
peter
f4a7c3d444 fixed debuginfo for variables in staticsymtable 2004-11-04 17:09:54 +00:00
peter
c95a859f0a * generic tlocation
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
olle
51fb338952 * reverted, for macos only, last change. 2004-10-28 18:29:44 +00:00
peter
ed07ab5f04 * localloc of staticsymtable needs a AT_NONE since it is a reference 2004-10-26 15:03:31 +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
a4c5a55d1b * add reg_sync when regvars are allocated to fix first use in
loop
2004-10-14 17:54:06 +00:00
peter
60c73cc0e5 * -Or fixes for open array 2004-10-13 21:12:51 +00:00
peter
66df745917 * small regvar for para fixes
* function tvarsym.is_regvar added
  * tvarsym.getvaluesize removed, use getsize instead
2004-10-11 15:48:15 +00:00
peter
4f7667488b * parameter regvar fixes 2004-10-10 21:08:55 +00:00