peter
e0cf015159
* refactor function result handling
...
* rename methodpointerinit/done to callinitblock/callcleanupblock
* moved checks in callnode to separate functions
* funcretnode is now always a simple node instead of a block of
statements
* funcret and methodpointer are generated/optimized only in pass_1 so
a conversion from calln to loadn is much easier
* function result assignments are much more often optimized to use the
assignment destination location instead of using a temp
git-svn-id: trunk@8558 -
2007-09-18 22:12:07 +00:00
Jonas Maebe
82e01b4ad9
+ support for refcounted records returned by functions in 2 registers
...
(mantis #8685 )
git-svn-id: trunk@7251 -
2007-05-03 15:05:44 +00:00
florian
00076c1076
* pass this to C++ methods always by reference
...
git-svn-id: trunk@7154 -
2007-04-22 19:49:56 +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
florian
6118c3e477
* fixed assembling of movd with 64 bit registers
...
* fixed passing of floats to c varargs
git-svn-id: trunk@5477 -
2006-11-25 20:32:32 +00:00
florian
ab919747a6
* several m68k fixes
...
* push_value_para partially cleaned up
git-svn-id: trunk@5435 -
2006-11-20 22:13:49 +00:00
florian
95518d7ecf
* pushparavalue shouldn't care about emulation settings
...
git-svn-id: trunk@5260 -
2006-11-05 21:55:12 +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
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
67ba76f090
* several arm fixes
...
git-svn-id: trunk@4742 -
2006-09-27 21:05:05 +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
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
35126247bc
* disabled a_call_ref for non-x86 (generates better code for ppc,
...
and means I don't have to cook up an a_call_ref for SPARC)
git-svn-id: trunk@4337 -
2006-08-03 15:46:48 +00:00
Jonas Maebe
2fd0ddf2f5
* fixed web bug #7100 (finalize instead of only decrref temps for
...
refcounted function results)
git-svn-id: trunk@4243 -
2006-07-17 15:29:30 +00:00
Jonas Maebe
d75b19e484
* removed/conditionalised several unused variables
...
git-svn-id: trunk@4194 -
2006-07-14 19:44:54 +00:00
peter
da8b734b56
* fix previous commit
...
git-svn-id: trunk@3936 -
2006-06-25 11:15:40 +00:00
peter
722c91e8f3
* disable vtentry code until a clean implementation is done
...
git-svn-id: trunk@3934 -
2006-06-25 10:13:59 +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
florian
da02375f57
+ safecall support for x86_64
...
git-svn-id: trunk@3425 -
2006-05-06 07:58:08 +00:00
florian
acc016c9ec
* finished safecall support
...
git-svn-id: trunk@3417 -
2006-05-04 20:40:31 +00:00
florian
9bd2ee5477
* optimized code generation for virtual method calls
...
git-svn-id: trunk@3388 -
2006-04-30 19:07:16 +00:00
peter
fe4ab79cd9
* remove check for out/var parameters with LOC_CREFERENCE, we generate valid
...
code. The checking if the code is allowed is already done by valid_for_assign()
git-svn-id: trunk@3262 -
2006-04-18 06:27:01 +00:00
peter
be88cd47b2
Merged revisions 3090-3113 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
r3090 | peter | 2006-03-30 15:10:15 +0100 (Thu, 30 Mar 2006) | 2 lines
* infrastructure for .vtable directives
r3094 | peter | 2006-03-31 10:01:48 +0100 (Fri, 31 Mar 2006) | 2 lines
* vtable directive fixes
r3113 | peter | 2006-04-01 22:49:57 +0100 (Sat, 01 Apr 2006) | 2 lines
* Smart VTable linking using Symbols
git-svn-id: trunk@3115 -
2006-04-02 00:11:17 +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
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
Jonas Maebe
7c9cfe5e06
* fixed tests/test/cg/tformfnc.pp
...
git-svn-id: trunk@2844 -
2006-03-10 21:18:21 +00:00
tom_at_work
93bb997d8f
* ppc64/linux: enhanced varargs support (passes tprintf test now)
...
* ppc64/linux: some small tweak for small memory locations copy code
git-svn-id: trunk@1778 -
2005-11-17 21:35:01 +00:00
florian
cd96d43ac3
* reverted lazy binding patch: lazy binding requires anyways PIC
...
git-svn-id: trunk@1758 -
2005-11-15 19:21:42 +00:00
florian
72d7597edc
+ implementation of lazy binding for linux
...
git-svn-id: trunk@1750 -
2005-11-14 22:28:12 +00:00
Jonas Maebe
89094457c5
* pass varargs float parameters only in integer registers instead of only
...
in fpu registers for aix abi. Proper fix is to pass them in both, but
at least gcc under Mac OS X only seems to use the contents in the integer
registers currently.
git-svn-id: trunk@1576 -
2005-10-23 14:23:16 +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
florian
adb193497d
+ softfloat support for wince
...
* more units are build for wince
git-svn-id: trunk@959 -
2005-08-28 12:40:43 +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
1eed46514f
* passing of dyn. arrays of tvarrec to array of const fixed, fixes bug #4219
...
git-svn-id: trunk@816 -
2005-08-07 14:43:45 +00:00
florian
32b96e75f3
* more fixes for float parameter handling on arm
...
git-svn-id: trunk@728 -
2005-07-22 20:14:03 +00:00
florian
c15f720867
* fixed passing of floats for cdecl procedures/functions
...
git-svn-id: trunk@726 -
2005-07-21 20:12:28 +00:00
florian
dac1050c11
+ mmx support revived, fixes bug #4106
...
git-svn-id: trunk@555 -
2005-07-02 11:53:51 +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
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
5db9200128
decr refcnt for out paras
2005-04-25 09:41:28 +00:00
peter
50bbe3c205
* support typecasting a ordinal const to 8 byte record. a_param_loc
...
can't be used. Instead force the location to memory so it uses
a_param_ref
2005-04-05 21:06:44 +00:00
peter
6e0cf1751a
fix register deallocation for 64bit results
2005-02-27 16:40:13 +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
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
cd01e600b9
* update x86_64 with new cpupara
2005-01-29 11:36:52 +00:00
peter
35e466d971
* remove copy_value_on_stack and a_param_copy_ref
2005-01-20 17:47:01 +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
florian
b28dbc570d
* removed ie20050111
2005-01-12 10:02:22 +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
florian
fcfbc935a1
+ implemented abi compliant handling of strucutured functions results on sparc platform
2005-01-07 16:22:54 +00:00
peter
cf8c959014
* release temps in array constructor
2005-01-04 16:36:51 +00:00
peter
a15f1c3283
* Don't release methodpointer. It is maybe still needed when we need to
...
convert the calln to loadn
2005-01-02 16:58:48 +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
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
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
florian
73c30d6579
* fixed arm compilation with cgutils
...
* ...
2004-11-01 17:41:28 +00:00
peter
c95a859f0a
* generic tlocation
...
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
705868e816
* remove saveregister calling convention
2004-10-24 20:01:08 +00:00
peter
2ee2004032
* fixed compilation with removed loadref
2004-10-24 11:53:45 +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
0573c742e4
* passing a var parameter to var parameter is now also allowed
...
for register locations (=regvars)
2004-10-10 20:21:18 +00:00
peter
96a6acbda2
* dealloc function result registers, register allocation is now
...
back at pre-paraloc level
2004-09-27 15:15:20 +00:00
peter
65c3ba277c
* ungetregister is now only used for cpuregisters, renamed to
...
ungetcpuregister
* renamed (get|unget)explicitregister(s) to ..cpuregister
* removed location-release/reference_release
2004-09-25 14:23:54 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
michael
04a69ced17
+ Fix for bug #3207 from Peter
2004-07-12 10:47:42 +00:00
peter
20d7aca9f0
* comps are passed in int registers
2004-07-11 19:01:13 +00:00
Jonas Maebe
f1bda1700a
* support register parameters for inlined procedures + some inline
...
cleanups
2004-07-09 23:41:04 +00:00
peter
9a1925980c
* constructors don't return in parameter
2004-06-29 20:56:46 +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
b86f2c6a25
* methodpointer is loaded into a temp when it was a calln
2004-05-23 18:28:40 +00:00
peter
5358278ca1
tai_regalloc.allocation changed to ratype to notify rgobj of register size changes
2004-05-22 23:34:27 +00:00
florian
c68ea95074
+ syscall directive support for MorphOS added
2004-04-28 15:19:03 +00:00
peter
55daf96ba7
* disable some debuginfo info when valgrind support is used
2004-03-14 20:10:56 +00:00
florian
6ea06bc740
* fixed inlining on arm
2004-03-13 21:23:21 +00:00
peter
96463e762a
* fix for sparc that pushes floats in int registers
2004-03-09 16:28:31 +00:00
mazen
3187986483
+ difference between three similar internal errors
2004-03-09 13:04:12 +00:00
florian
fabb9c33ac
* top_symbol killed
...
+ refaddr to treference added
+ refsymbol to treference added
* top_local stuff moved to an extra record to save memory
+ aint introduced
* tppufile.get/putint64/aint implemented
2004-02-27 10:21:04 +00:00
peter
a6f79c3c7f
* support typecasts for passing @var to formal const
2004-02-26 16:12:04 +00:00
daniel
c57e542a81
* Fixed memory leak
2004-02-22 13:01:15 +00:00
florian
00dbe6655d
+ nx86set added
...
* some more x86-64 fixes
2004-02-22 12:04:04 +00:00
florian
e7399ee666
* handling of float parameters passed in mm registers fixed
2004-02-20 22:16:34 +00:00
peter
c844c5a505
* procvar cleanup
2004-02-20 21:55:59 +00:00
peter
7b04fdec2e
* fix compilation without GDB
2004-02-11 19:59:06 +00:00
florian
abc41f1c3c
* several fixes to parameter handling on arm
2004-02-09 22:48:45 +00:00
peter
1422985ca0
* Change several $ifdef i386 to x86
...
* Change several OS_32 to OS_INT/OS_ADDR
2004-01-31 17:45:16 +00:00
florian
a1d904c264
* set aktlocaldata for inlined procedures correctly
2004-01-26 17:34:14 +00:00
peter
42c6e9323b
* sparc updates, mostly float related
2004-01-12 16:39:40 +00:00
florian
d38abc3a3f
+ setting of bit 6 of cr for c var args on ppc implemented
2003-12-28 22:09:12 +00:00
florian
ace2d682b0
* rtl and compiler compile with -Cfsse2
2003-12-26 13:19:16 +00:00