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