Commit Graph

51 Commits

Author SHA1 Message Date
peter
2e9968d46c * arrays always by addr
git-svn-id: trunk@8232 -
2007-08-06 19:44:25 +00:00
peter
f5d5e377d2 * fix linux x86_64 for records and arrays
git-svn-id: trunk@8224 -
2007-08-05 19:38:21 +00:00
peter
4e6c57b9ee * cleanup x86_64 structures in registers
git-svn-id: trunk@8214 -
2007-08-02 20:46:48 +00:00
florian
be6d2dd0f9 * reverted wrong commit in r8133
git-svn-id: trunk@8135 -
2007-07-22 17:00:51 +00:00
florian
447276c5bb * Jcc reads the flags, this was not in the dat yet, resolves #9278
* disabled 4 ops variant of insertq for now

git-svn-id: trunk@8133 -
2007-07-22 16:40:44 +00:00
daniel
4a3870eb12 * Fix bug #9261.
git-svn-id: trunk@8056 -
2007-07-14 20:57:56 +00:00
daniel
f31889df57 * Pass const params by pointer if calling convention<>register. This is
needed for the windows unit as Delphi compatibility requires const
    parameters for some procedures and Delphi assumes parameters > 4 to be
    passed as pointer.

git-svn-id: trunk@7982 -
2007-07-08 17:26:08 +00:00
daniel
44e07cd098 * Fix bug #9141 and pass const params <=16 in by value.
git-svn-id: trunk@7979 -
2007-07-07 21:01:46 +00:00
daniel
56880a75f9 * When adding the start offset of the parameters, process chained
paralocs too.

git-svn-id: trunk@7834 -
2007-06-27 20:28:45 +00:00
yury
3b7e458f02 * Properly set location of float return value if it is passed as var parameter (it is always happens for safecall functions). It fixes bugs #8523 and #8977.
+ test.

git-svn-id: trunk@7728 -
2007-06-18 23:23:46 +00:00
florian
2566e38eae * handle shortstrings like arrays and records when returning them from functions
git-svn-id: trunk@6563 -
2007-02-19 18:55:44 +00:00
florian
77b155ea79 * def.size in [1,2,4,8] goes wrong if def.size>255, fixed, resolves #8232
git-svn-id: trunk@6245 -
2007-01-28 18:06:51 +00:00
florian
a95c2220cc * fixed volatile registers for x86_64-win64
git-svn-id: trunk@5781 -
2007-01-01 23:26:21 +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
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
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
23596358a7 * fix arraydef copybyvalue check
git-svn-id: trunk@5088 -
2006-10-30 10:27:49 +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
5eef73c1ab * fixed passing of registers on x86-64_linux, should fix #7613
git-svn-id: trunk@4951 -
2006-10-17 20:58:16 +00:00
florian
360cbe1de1 * fixed passing of structs on x86_64-linux
git-svn-id: trunk@4688 -
2006-09-23 09:05:21 +00:00
florian
97ce278e14 * fixed another calling convention problem on win64
git-svn-id: trunk@4593 -
2006-09-09 20:11:47 +00:00
florian
819dec1411 * pass only non specialized arrays in registers on win x64
git-svn-id: trunk@4585 -
2006-09-09 17:33:41 +00:00
florian
24ae32c855 * fixed passing of record parameters on win64
git-svn-id: trunk@4583 -
2006-09-09 16:33:15 +00:00
florian
79b8d66212 * fixed safecall calling convention on x86_64
git-svn-id: trunk@3442 -
2006-05-06 22:56:34 +00:00
florian
5a888656ca * pass records of all sizes by reference if they are const
git-svn-id: trunk@3251 -
2006-04-17 18:12:14 +00:00
florian
2d3d4a66f6 * keep stack aligned to 16 byte borders on winx64
git-svn-id: trunk@3212 -
2006-04-15 16:48:28 +00:00
florian
9da293678e * fixed mm register parameters which were messed up by a previous commit
* fixed duplicate ie number

git-svn-id: trunk@3125 -
2006-04-02 19:15:38 +00:00
florian
d0c327b14b * basic winx64 calling convention support
git-svn-id: trunk@3108 -
2006-04-01 14:42:52 +00:00
peter
f87b04c034 Merged revisions 2994 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2994 | peter | 2006-03-21 07:58:12 +0100 (Tue, 21 Mar 2006) | 2 lines

  * use float size for parameters on the stack

........

git-svn-id: trunk@2995 -
2006-03-21 06:59:04 +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
florian
9be5247db5 * dyn. arrays are always passed by value, fixes 4240
git-svn-id: trunk@800 -
2005-08-05 21:52:58 +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
peter
adc66eaf55 * arrays are always passed by addr
* cdecl array of const is passed by value so it doesn't allocate
    anything
2005-02-06 18:59:15 +00:00
peter
18ebd28692 * push_addr_param must be defined per target 2005-02-03 20:04:49 +00:00
peter
75f0b9eb40 * fix extended paraloc 2005-02-03 18:32:25 +00:00
peter
cd01e600b9 * update x86_64 with new cpupara 2005-01-29 11:36:52 +00:00
peter
1c458abb0b * compile fixes for x86_64 2004-12-12 12:56:18 +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
peter
f2a75dd91f * fixed location size for s64comp 2004-10-05 20:55:49 +00:00
peter
33a834821f * paraloc branch merged 2004-09-21 17:25:12 +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
8c5b0f7d82 * first try to get cpupara working for x86_64 2004-02-04 22:01:13 +00:00
florian
85bed883ce * another bunch of x86-64 fixes mainly calling convention and
assembler reader related
2004-01-14 23:39:05 +00:00
florian
9c476ba5f1 - delete parameter in cg64 methods removed 2003-12-24 00:10:02 +00:00
florian
91bbc7bea3 * error when address of an abstract method is taken
* fixed some x86-64 problems
  * merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
b59b436130 * x86-64 compiles
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
florian
52dbda43c3 + initial release of x86-64 target code 2002-07-24 22:38:15 +00:00