Jonas Maebe
ab8f96f4cf
* disabled i386 createtempparaloc again because it generates wrong
...
code in case of nested function calls with lots of arguments
git-svn-id: trunk@2948 -
2006-03-17 22:01:25 +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
d8ed0a8722
* copied createtemppara override from x86, to avoid creating double
...
copies of large value paras
git-svn-id: trunk@2692 -
2006-02-26 14:53:59 +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
8f6babfef7
* fixed passing record parameters of size >= 3 and whose size is not
...
divisible by 4 on Darwin (have to be passed on the stack instead of in
registers), fixes tcalext3
git-svn-id: trunk@2002 -
2005-12-20 10:13:10 +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
Jonas Maebe
614f49355b
- removed commented unused assignintreg() procedure
...
git-svn-id: trunk@648 -
2005-07-18 13:03:34 +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
Jonas Maebe
bfa2301575
* const record parameters > 8 bytes are now passed by reference for non
...
cdecl/cppdecl procedures on Mac OS/Mac OS X to fix compatibility with
GPC (slightly more efficient than Metrowerks behaviour below, but
less efficient in most cases than our previous scheme)
+ "mwpascal" procedure directive to support the const record parameter
behaviour of Metrowerks Pascal, which passes all const records by
reference
2005-03-27 14:10:52 +00:00
Jonas Maebe
706a87c2df
* don't lose sign of ord types for register parameters
2005-02-19 14:04:14 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
Jonas Maebe
a823a15888
* records which consist of only a union of one element have to be passed
...
according to record parameter passing rules, not according to the rules
of that item's type (change relevant to AIX abi only)
2005-02-11 15:20:23 +00:00
peter
18ebd28692
* push_addr_param must be defined per target
2005-02-03 20:04:49 +00:00
peter
f5e21ec2ff
* fixed parseparaloc
2005-01-31 17:46:25 +00:00
peter
35e466d971
* remove copy_value_on_stack and a_param_copy_ref
2005-01-20 17:47:01 +00:00
Jonas Maebe
52212c3fb6
* fixed overallocation of stack space for parameters under SYSV
...
(introduced in one of my previous commits)
* unified code of get_volatile_registers_fpu for SYSV and AIX
2005-01-14 20:59:17 +00:00
Jonas Maebe
74cc20070d
* r2 can be used by the register allocator under Darwin
...
* merged the initialisations of the fpu register allocator for AIX and
SYSV
2005-01-13 22:02:40 +00:00
Jonas Maebe
8654fac06c
* fixed copy_value_on_stack() for AIX abi
...
+ added support for passing empty record parameters
2005-01-13 19:32:08 +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
Jonas Maebe
7fc8f866c6
* fixed stupid tregister/tsuperregister bug (type checking circumvented
...
using explicit typecase), caused bug3523
2005-01-07 10:58:03 +00:00
Károly Balogh
5908985365
* more SysV call support stuff for MorphOS
2005-01-06 02:13:03 +00:00
Károly Balogh
18be2ff0fd
* sysv abi also uses F0-F13 as volatile registers
2005-01-05 19:01:53 +00:00
Jonas Maebe
d377cacc61
* fixed call-by-value passing of records with size 1, 2 or 4 for AIX abi
...
(using a hack, normally all records should by passed by value under the
aix abi, but that's currently impossible)
2004-12-24 15:00:11 +00:00
peter
fad0e529a4
* syscall with sysv abi for morphos
2004-12-15 19:30:32 +00:00
Jonas Maebe
49a8939b22
* modifications to work with the generic code to copy LOC_REFERENCE
...
parameters to local temps (fixes tests/test/cg/tmanypara)
2004-12-04 21:47:46 +00:00
peter
8cf8c54609
* fixed varargs
...
* replaced dynarray with tlist
2004-11-22 22:01:19 +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
florian
60e0494a74
* fixed morphos syscall
2004-11-14 16:26:29 +00:00
florian
36112785f8
* indention fixed
2004-09-25 20:28:20 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
florian
aba734edc9
* fixed funcret_paraloc writing in units
2004-07-19 19:15:50 +00:00
florian
b1dc8c5572
* function result location for syscalls on MOS hopefully correctly set now
2004-07-17 13:51:57 +00:00
Jonas Maebe
fab51678da
* fixed passing of fpu paras on the stack
...
* fixed number of fpu parameters passed in registers
* skip corresponding integer registers when using an fpu register for a
parameter under the AIX abi
2004-07-09 21:45:24 +00:00
Jonas Maebe
563f7ba253
* fix for broken TP-style constructor handling in the compiler
2004-07-01 18:00:37 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
e8098f6b71
+ added lib support for Amiga/MorphOS syscalls
2004-05-01 22:05:01 +00:00
Károly Balogh
6dbbdea44c
* added correct offsets for PowerPC/MorphOS location support
2004-04-18 23:19:48 +00:00
florian
a7478ee97f
+ location support for arguments, currently PowerPC/MorphOS only
2004-04-18 15:22:24 +00:00
florian
06a33abebd
* fixed arg. area calculation
2004-02-19 17:07:42 +00:00
florian
be7067445a
* fixed to compile the rtl again
2004-02-11 23:18:59 +00:00
Jonas Maebe
df428f7a5d
* fixed allocation of parameters passed by reference for powerpc in
...
callee
2004-01-17 15:55:10 +00:00
florian
541955ad91
+ x86 instruction tables for x86-64 extended
2004-01-15 14:01:18 +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
Jonas Maebe
6bab64590e
* hopefully fixed varargs (both Pascal- and C-style)
2003-12-28 15:33:06 +00:00
florian
2aeea741ed
* fixed ppc compilation
2003-12-16 21:49:47 +00:00
florian
2e5c899b81
+ dummy tppcparamanager.create_varargs_paraloc_info added
2003-12-07 22:35:05 +00:00
Jonas Maebe
d5373d5971
* fixed several ppc assembler reader related problems
...
* local vars in assembler procedures now start at offset 4
* fixed second_int_to_bool (apparently an integer can be in LOC_JUMP??)
2003-11-29 16:27:19 +00:00
peter
ec2e200e42
* fixed ppc build
2003-10-17 14:52:07 +00:00
olle
3febb20061
* changed to symbolic const for alignment
2003-10-08 21:15:27 +00:00
mazen
7668192be0
+ Alignement field added to TParaLocation (=4 as 32 bits archs)
2003-10-08 14:11:36 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
Jonas Maebe
0bc32cbcd1
+ implemented volatile register queries
2003-09-14 21:56:41 +00:00
Jonas Maebe
c8863b920b
* fixed some ppc problems
2003-09-14 16:37:20 +00:00
peter
98d153815c
* some fixes for ppc
2003-09-03 21:04:14 +00:00
peter
601160a0e3
* powerpc compiles again
2003-09-03 19:35:24 +00:00
peter
52c73e80d1
* start of sparc support for newra
2003-08-11 21:18:20 +00:00
Jonas Maebe
70a5d1e4c2
* create_paraloc_info() is now called separately for the caller and
...
callee info
* fixed ppc cycle
2003-07-05 20:11:41 +00:00
peter
b7d99ec934
* paraloc splitted in callerparaloc,calleeparaloc
...
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
Jonas Maebe
9b645eef82
- removed allocparaloc/freeparaloc, generic ones are ok now
2003-06-17 17:27:08 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
55509b199b
* (de)allocation of registers for parameters is now performed properly
...
(and checked on the ppc)
- removed obsolete allocation of all parameter registers at the start
of a procedure (and deallocation at the end)
2003-06-09 14:54:26 +00:00
Jonas Maebe
98c3c2489e
* zero paraloc tregisters, so that the alignment bytes are 0 (otherwise
...
the crc of the ppu files can change between interface and
implementation)
2003-06-08 10:52:01 +00:00
Jonas Maebe
edb2179730
+ added freeintparaloc
...
* ppc get/freeintparaloc now check whether the parameter regs are
properly allocated/deallocated (and get an extra list para)
* ppc a_call_* now internalerrors if pi_do_call is not yet set
* fixed lot of missing pi_do_call's
2003-06-07 18:57:04 +00:00
marco
1daf2ca476
* register skipping (aligning) for int64 parameters, sys V abi only.
2003-05-30 23:45:49 +00:00
marco
a73b98ea9f
* getfuncretparaloc now uses r3 for highdword and r4 for lo. Doesn't work tho
2003-05-30 22:54:19 +00:00
marco
152b525419
* committed fix that swaps int64 parameters hi and lo.
2003-05-30 22:35:03 +00:00
Jonas Maebe
5cfedffb9e
* added some missing paralocation size settings
2003-05-24 11:48:40 +00:00
florian
999b859bc8
* fixed calling sequence for subroutines using the aix abi
2003-05-19 12:15:28 +00:00
florian
d73c88ce9f
* fixed parameter passing by value of large sets, strings and method pointers
2003-05-12 20:14:47 +00:00
florian
65eba18e20
* fixed passing of small const arrays and const records, they are always passed by reference
2003-05-11 23:19:32 +00:00
florian
15c0b633ab
* fixed the powerpc to work with the new function result handling
2003-04-26 11:30:59 +00:00
florian
0284016ee9
* fixed several issues with powerpc
...
+ applied a patch from Jonas for nested function calls (PowerPC only)
* ...
2003-04-23 12:35:34 +00:00
Jonas Maebe
44f26523e6
* process para's from first to last instead of the other way round
2003-04-17 18:52:35 +00:00
Jonas Maebe
fd1056c621
* fixed paralocation for integer var/out parameters
2003-04-16 07:55:07 +00:00
Jonas Maebe
d168ae15df
* lots of new regallocator fixes, both in generic and ppc-specific code
...
(ppc compiler still can't compile the linux system unit though)
2003-03-11 21:46:24 +00:00
florian
2102ce7031
* fixed some PowerPC issues
2003-01-09 22:00:53 +00:00
florian
34a91d9171
* fixed broken PowerPC compiler
2003-01-09 20:41:10 +00:00
olle
09f06d0cf3
* made powerpc compiler compile after Daniels Tregister modification
2003-01-09 11:22:14 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
florian
938f46f246
* fixed some crashes and a rte 201
2002-12-15 19:22:01 +00:00
peter
f3fc72095f
* splitted defbase in defutil,symutil,defcmp
...
* merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
peter
a496dbe1ff
* pass proccalloption to ret_in_xxx and push_xxx functions
2002-11-18 17:31:54 +00:00
Jonas Maebe
4510d75277
+ set, variant support in getfuncretparaloc
2002-10-02 13:33:36 +00:00
florian
71f7afa9a6
+ getparaloc supports now sets and variants
2002-09-28 21:27:16 +00:00
Jonas Maebe
17a0e516b5
* int64 paras are now handled correctly (until the registers are used up
...
anyway :)
* the return location is now initialized correctly
* fixed bug where ret_in_reg() was called for the procdefinition instead
of for the result of the procedure
2002-09-10 21:28:05 +00:00
florian
36e41d49d3
- removed passes_parameters_in_reg
2002-09-09 09:11:37 +00:00
florian
a7a354956d
* first part of PowerPC fixes
2002-09-07 17:54:58 +00:00
florian
6502638258
* several powerpc related stuff fixed
2002-09-01 21:04:47 +00:00
florian
5380652cad
* ppc compilation fixed
2002-08-31 12:43:31 +00:00
florian
a375ad9565
* remaining assembler writer bugs fixed, the errors in the
...
system unit are inline assembler problems
2002-08-18 10:42:37 +00:00
florian
4144773f01
* result type handling in tcgcal.pass_2 overhauled
...
* better tnode.dowrite
* some ppc stuff fixed
2002-08-17 22:09:43 +00:00
florian
af4302bc67
* more fixes for ppc calling conventions
2002-08-13 21:40:55 +00:00
florian
ed950491a8
* the code generator knows now if parameters are in registers
2002-07-30 20:50:43 +00:00
florian
3fe0229843
+ added direct assembler reader for PowerPC
2002-07-28 20:45:22 +00:00
florian
1b5435381b
* several PowerPC related fixes to get forward with system unit compilation
2002-07-26 22:22:10 +00:00
florian
336808f6c3
* start of the new generic parameter handling
2002-07-11 14:41:27 +00:00
florian
be574d1cf2
* powerpc target fixed, very simple units can be compiled
2002-07-07 09:44:31 +00:00