Jonas Maebe
cc5aeb09de
* fixed handling the result value of functions where the result type is
...
forced to something else by the compiler (internal rtl functions etc),
necessary for the objc branch
* fixed adding all used function result registers to the list of
registers that may need to be saved before a function call
git-svn-id: trunk@13695 -
2009-09-12 12:21:34 +00:00
Jonas Maebe
718694d1d6
* always specify an explicit alignment for tgobj.gettemp (so e.g.
...
shortstring temps don't get maximum alignment)
* changed some gettemptyed() calls into gettemp() calls (gettemptyped
means that this temp can only be used for temps of that type,
which is necessary for refcounted types but not for floats)
git-svn-id: trunk@12036 -
2008-11-08 22:20:47 +00:00
yury
0e34e98b82
* Removed abstract modifier for some optional (not needed for every CPU target) methods in tcg and tparamanager classes. These methods throw internal error if not overrode.
...
git-svn-id: trunk@11453 -
2008-07-23 12:49:53 +00:00
peter
8f239d04b6
* cleanup and simplify the set type handling
...
git-svn-id: trunk@10432 -
2008-03-02 17:48:27 +00:00
Jonas Maebe
f36e5411af
* split cpu64bit compiler define into
...
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
2008-02-13 20:44:00 +00:00
Jonas Maebe
cdfb7c8f26
* patch from Sergei Gorelkin to return ansi/widestrings by reference
...
in an invisible parameter (Delphi compatible, faster/smaller code)
git-svn-id: trunk@9718 -
2008-01-11 22:36:50 +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
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
622cc06bbd
* storing stack passed parameters temp. helps all CPUs
...
git-svn-id: trunk@4624 -
2006-09-16 09:28:47 +00:00
florian
b63721070b
* avoid stores to memory on x86_64 too when loading parameters
...
git-svn-id: trunk@4623 -
2006-09-16 09:07:46 +00:00
Jonas Maebe
743b05e911
* fixed and released optimization to prevent some superfluous
...
parameter copying for ppc32/ppc64
git-svn-id: trunk@4186 -
2006-07-14 17:55:45 +00:00
peter
b7a936faa0
* interfaces return values need to be passed in parameters
...
git-svn-id: trunk@3194 -
2006-04-12 10:26:10 +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
Károly Balogh
739ae4c254
+ 1st attempt to have explicit funcretloc for Amiga/m68k
...
git-svn-id: trunk@1978 -
2005-12-18 03:58:27 +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
florian
d68c5e9079
* dyn. arrays are returned in registers
2005-02-08 16:40:16 +00:00
peter
18ebd28692
* push_addr_param must be defined per target
2005-02-03 20:04:49 +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
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
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
c95a859f0a
* generic tlocation
...
* move tlocation to cgutils
2004-10-31 21:45:02 +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
Jonas Maebe
f1bda1700a
* support register parameters for inlined procedures + some inline
...
cleanups
2004-07-09 23:41: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
florian
a7478ee97f
+ location support for arguments, currently PowerPC/MorphOS only
2004-04-18 15:22:24 +00:00
florian
40363f47e5
* compilation of arm rtl fixed
2004-03-07 00:16:59 +00:00
florian
10e765329d
* fixed arm compilation
...
* cleaned up code generation for exported linux procedures
2004-03-06 20:35:19 +00:00
florian
eaa8405a15
* temp. fix for lochigh para
2004-02-17 19:14:09 +00:00
florian
abc41f1c3c
* several fixes to parameter handling on arm
2004-02-09 22:48:45 +00:00
peter
e6929a1a32
* more x86_64 parameter fixes
...
* tparalocation.lochigh is now used to indicate if registerhigh
is used and what the type is
2004-02-09 22:14:17 +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
bfe452936f
* reverted Peter's alloctemp patch; hopefully properly
2003-12-06 01:15:22 +00:00
peter
64b0a0eadf
* delayed paraloc allocation, a_param_*() gets extra parameter
...
if it needs to allocate temp or real paralocation
* optimized/simplified int-real loading
2003-12-03 23:13:19 +00:00
Jonas Maebe
0cac29ec76
+ support for fpu temp parameters
...
+ saving/restoring of fpu register before/after a procedure call
2003-10-29 21:24:14 +00:00
peter
d0de3b3ea8
* 64k registers supported
...
* fixed some memory leaks
2003-10-17 14:38:32 +00:00
florian
1df13c788c
* fixed some MMX<->SSE
...
* started to fix ppc, needs an overhaul
+ stabs info improve for spilling, not sure if it works correctly/completly
- MMX_SUPPORT removed from Makefile.fpc
2003-10-11 16:06:42 +00:00
peter
fb81b7ebbb
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
...
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
2003-10-10 17:48:13 +00:00
daniel
b2343f4b16
* Register allocator splitted, ans abstract now
2003-10-09 21:31:37 +00:00
peter
da9f5e2319
* c style array of const generates callparanodes
...
* varargs paraloc fixes
2003-10-05 21:21:52 +00:00
peter
3a92a2a25a
* parameter alignment fixes
2003-10-03 22:00:33 +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
peter
22158bfb99
* updates for inlining
2003-09-30 21:02:37 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
peter
76a53a375d
* varspez in calls to push_addr_param
2003-09-16 16:17:01 +00:00
marco
cd5ae5fcc3
* Patch from Peter for paraloc
2003-09-10 08:31:47 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
peter
dfd60cb507
* released useparatemp
2003-09-04 15:39:58 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
peter
52c73e80d1
* start of sparc support for newra
2003-08-11 21:18:20 +00:00
peter
1b633246b9
* sparc fixes
2003-07-08 21:23:24 +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
peter
b489c2d65e
* allocpara/freepara 64bit support
2003-06-17 16:32:03 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
peter
d179aea20d
* ungetregisterfpu gets size parameter
2003-06-12 21:11:10 +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
419d7a9848
- disabled changing of LOC_*REGISTER to LOC_C*REGISTER in setparalocs,
...
this is not necessary anymore (doesn't do anything anymore actually,
except making sure the interface crc changes)
2003-06-08 10:54:41 +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
peter
1e7ecac976
* FUNCTION_RESULT64_LOW/HIGH_REG added for int64 results
2003-05-31 15:05:28 +00:00
peter
414bd5fa22
* more sparc cleanup
...
* accumulator removed, splitted in function_return_reg (called) and
function_result_reg (caller)
2003-05-30 23:57:08 +00:00
peter
c577c78366
* removed ret_in_acc, it's the reverse of ret_in_param
...
* fixed ret_in_param for win32 cdecl array
2003-05-13 15:16:13 +00:00
florian
72df326165
* some 64 bit adaptions in ncgadd
...
* x86-64 now uses ncgadd
* tparamanager.ret_in_acc doesn't return true anymore for a void-def
2003-04-30 22:15:59 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66
* aktprocdef cleanup, aktprocdef is now always nil when parsing
...
a new procdef declaration
* aktprocsym removed
* lexlevel removed, use symtable.symtablelevel instead
* implicit init/final code uses the normal genentry/genexit
* funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
peter
cf1f53f910
* fix push_high_param for cdecl
2003-04-23 13:15:04 +00:00
peter
3a321cb62e
* cdecl array of const has no addr push
2003-04-23 10:14:30 +00:00
peter
e248c0ece4
* fixed C style array of const
...
* fixed C array passing
* fixed left to right with high parameters
2003-04-22 13:47:08 +00:00
carl
59d3edeec7
* Several bugfixes for m68k target (register alloc., opcode emission)
...
+ VIS target
+ Generic add more complete (still not verified)
2003-02-02 19:25:54 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
peter
4cb96bf79b
* remove unused global var
2002-12-23 20:58:03 +00:00
peter
46ed8eb932
* fixed pushing of records>8 bytes with stdcall
...
* simplified hightree loading
2002-12-17 22:19:33 +00:00
peter
cab4c8879f
* only compile cs_fp_emulation support when cpufpuemu is defined
...
* define cpufpuemu for m68k only
2002-12-06 16:56:57 +00:00
peter
3d696d9c7c
* tvarsym.get_push_size replaced by paramanager.push_size
2002-11-27 20:04:09 +00:00
peter
8c82be898d
* copy_value_on_stack method added for cdecl record passing
2002-11-27 02:33:19 +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
peter
7dfdac71c0
* only push small arrays on the stack for win32
2002-11-16 18:00:04 +00:00
carl
67486c96c3
* fixes for Delphi 6 compilation
...
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
florian
1a6d33860b
* fixes to common code to get the alpha compiler compiled applied
2002-09-30 07:07:25 +00:00
florian
d5f0cbbf2b
* fixes to common code to get the alpha compiler compiled applied
2002-09-30 07:00:44 +00:00
florian
8d2d59325a
+ added generic tparamanager.getframepointerloc
2002-09-09 09:10:51 +00:00
florian
757e3976fe
* tvarsym.paraitem is set now
2002-09-07 19:40:39 +00:00
florian
6502638258
* several powerpc related stuff fixed
2002-09-01 21:04:47 +00:00
peter
a28f75ed03
* sym.insert_in_data removed
...
* symtable.insertvardata/insertconstdata added
* removed insert_in_data call from symtable.insert, it needs to be
called separatly. This allows to deref the address calculation
* procedures now calculate the parast addresses after the procedure
directives are parsed. This fixes the cdecl parast problem
* push_addr_param has an extra argument that specifies if cdecl is used
or not
2002-08-25 19:25:18 +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
e313bab4ff
* first part of procinfo rewrite
2002-08-17 09:23:33 +00:00
carl
745efb2c47
* issameref() to test if two references are the same (then emit no opcodes)
...
+ ret_in_reg to replace ret_in_acc
(fix some register allocation bugs at the same time)
+ save_std_register now has an extra parameter which is the
usedinproc registers
2002-08-16 14:24:57 +00:00
carl
9da171faf2
+ stab register indexes for powerpc (moved from gdb to cpubase)
...
+ tprocessor enumeration moved to cpuinfo
+ linker in target_info is now a class
* many many updates for m68k (will soon start to compile)
- removed some ifdef or correct them for correct cpu
2002-08-12 15:08:39 +00:00
Jonas Maebe
bfbf0ea7c6
* register parameters are now LOC_CREGISTER instead of LOC_REGISTER
2002-08-10 17:15:20 +00:00
florian
030eae46de
* a couple of interface related fixes
2002-08-09 07:33:01 +00:00
florian
b136cecacd
* first part of ppc calling conventions fix
2002-08-06 20:55:20 +00:00
carl
eff31e8524
+ more more more documentation
...
+ first version include/exclude (can't test though, not enough scratch for i386 :()...
2002-08-05 18:27:48 +00:00
florian
ed950491a8
* the code generator knows now if parameters are in registers
2002-07-30 20:50:43 +00:00