Jonas Maebe
a23630260b
+ "weakexternal" support for imported procedures and variables.
...
the syntax is exactly the same as for "external", except for
the keyword. It is currently only active for Darwin targets.
It should also work at least for Linux targets, but only with
the GNU assembler (which is why it is not activated there)
+ test for this functionality
git-svn-id: trunk@12009 -
2008-11-01 18:38:32 +00:00
florian
1afb1aa9cc
+ ror/rol functions
...
+ internal compiler support for ror/rol on i386
git-svn-id: trunk@11466 -
2008-07-27 17:12:32 +00:00
florian
5c18145632
* fix interface wrappers on sparc
...
git-svn-id: trunk@10999 -
2008-05-18 11:11:30 +00:00
florian
77e5e0525c
* experimental sparc interface wrapper patch
...
git-svn-id: trunk@10991 -
2008-05-17 20:10:35 +00:00
mazen
dec0ba97b0
* Applied patch to fix issue with far call for sparc (bug #11312 ).
...
git-svn-id: trunk@10988 -
2008-05-17 19:31:08 +00:00
Jonas Maebe
263984f874
* fixed a_load_ref_reg for OS_S8->OS_16 for ppc32, ppc64 and sparc
...
(and on ppc64 also for OS_S8->OS_32 and OS_S16->OS_32)
* adapted tcnvint6 to check for ppc64 OS_S16->OS_32 conversion
(the old comparison was performed using a 32 bit compare and
therefore did not notice the wrong result)
git-svn-id: trunk@10705 -
2008-04-18 20:04:55 +00:00
Jonas Maebe
8349cde7db
* changed byte/word/longbool to be Delphi-compatible (+ similar changes
...
for qwordbool) + test:
o assigning true to such a variable now sets them to $ff/$ffff/$ffffffff
o these types are now all signed
o converting an integer type to a byte/word/long/qwordbool using an
explicit type cast keeps the integer's original value stored in the
bool, instead of forcing it to ord(true)/ord(false)
(mantis #10233 and #10613 , implemented for all architectures, testsuite
tested for ppc32, sparc and x86)
* fixed some places where the rtl depended on longbool(true) having the
value 1
* extended several boolean tests (and adapted some to no longer assume
that byte/word/long/qwordbool(true)=1)
+ support for converting to qwordbool in second_int_to_bool for x86, ppc
and sparc
git-svn-id: trunk@9898 -
2008-01-24 21:30:55 +00:00
Jonas Maebe
ad5ce1adf4
* fixed a_load_reg_ref: the store size has to depend on the tosize,
...
not on the fromsize (fixes webtbs/tw10072, and hopefully also
resolves mantis #8121 )
git-svn-id: trunk@9037 -
2007-11-01 13:31:23 +00:00
florian
00d6a03b2c
+ default code now preserves mm registers
...
* save|restore_standard_registers => save|restore_registers
git-svn-id: trunk@8954 -
2007-10-27 12:02:28 +00:00
Jonas Maebe
20dbda751a
* fixed sparc compilation after addr_lo/hi changes
...
git-svn-id: trunk@8107 -
2007-07-20 12:30:16 +00:00
Jonas Maebe
085689af60
+ support for unaligned stores
...
* avoid some unnecessary unaligned load sequences
git-svn-id: trunk@7427 -
2007-05-23 12:03:42 +00:00
Jonas Maebe
2b0c01b903
* simplified and fixed a_load_reg_reg()
...
git-svn-id: trunk@7121 -
2007-04-17 13:35:42 +00:00
peter
d810064e48
* fix shift for 16bit from mazen
...
git-svn-id: trunk@7091 -
2007-04-12 09:58:21 +00:00
peter
1f7cde0306
* patch from mazen to fix zero extending of register moves where the destination
...
size is larger than the source size
git-svn-id: trunk@7090 -
2007-04-12 07:11:24 +00:00
florian
070874461c
* fix for tcnvint5 on sparc
...
git-svn-id: trunk@7088 -
2007-04-11 19:38:04 +00:00
florian
9140766d5a
* support for unaligned loads/stores on sparc
...
git-svn-id: trunk@7062 -
2007-04-05 12:49:12 +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
abcccc2f03
* memory leaking fixed
...
git-svn-id: trunk@5566 -
2006-12-11 12:23:52 +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
Jonas Maebe
805570c3cf
* fixed internalerrors due to no (dummy) MM reg allocator
...
git-svn-id: trunk@4336 -
2006-08-03 15:37:26 +00:00
peter
0ec2921bbe
* split newasmsymbol to refasmsymbol and defineasmsymbol
...
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
florian
46a68c8a27
* fixed compilation
...
git-svn-id: trunk@2945 -
2006-03-17 21:01:50 +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
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
peter
c1b2e1aac5
* check function/procedure type when adding a proc definition
...
git-svn-id: trunk@546 -
2005-06-30 14:56:05 +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
22d9294ab3
+ overflow checking for the arm
2005-02-13 18:55:19 +00:00
florian
651f9e5bbd
+ implemented overflow checking for 64 bit types on sparc
2005-01-27 20:32:51 +00:00
florian
4efb72e13d
* fixed load64 which shouldn't do a make_simple_ref
2005-01-25 20:58:30 +00:00
peter
e820bc93f2
* interface wrapper generation moved to cgobj
...
* generate interface wrappers after the module is parsed
2005-01-24 22:08:32 +00:00
florian
00324d38bf
+ optimized code generation on sparc
...
+ some stuff for pic code on sparc added
2005-01-23 17:14:21 +00:00
florian
fcfbc935a1
+ implemented abi compliant handling of strucutured functions results on sparc platform
2005-01-07 16:22:54 +00:00
florian
ed57ad0371
* improved code generation for OP_MUL/OP_IMUL
2005-01-01 13:19:09 +00:00
florian
b44f17099c
* fixed some alignment trouble
2004-12-18 15:48:06 +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
d6bffaf5c6
* fixed sparc compile
...
* fixed float regvar loading
2004-10-10 20:51:46 +00:00
peter
434475be33
* concatcopy_unaligned maps by default to concatcopy, sparc will
...
override it with call to fpc_move
2004-10-10 20:31:48 +00:00
florian
15d3388449
* fixed more sparc overflow stuff
...
* fixed some op64 stuff for sparc
2004-09-29 18:55:40 +00:00
peter
6da9996dba
* fixed passing of flaot parameters. The general size is still float,
...
only the size of the locations is now OS_32
2004-09-27 21:24:17 +00:00
florian
62f93d3473
+ partial overflow checking on sparc; multiplication still missing
2004-09-26 21:04:35 +00:00
florian
5392f62678
+ a_jmp_name for sparc added
2004-09-26 17:36:12 +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
d5140a5792
* don't remove MOV reg1,reg1 it is needed for the RA
2004-09-21 20:33:00 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
florian
5b2a1d9fdf
* fixed absolute on sparc
2004-08-25 20:40:04 +00:00
florian
1eb575fa22
* fixed longbool(<int64>) on sparc
2004-08-24 21:02:32 +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
mazen
6f13b5d5f3
* fixed conditions upon IEs for inlined function call stack frames
2004-03-12 15:42:18 +00:00
mazen
e465aa443e
- revert '../' from include path
2004-03-12 08:18:11 +00:00
olle
4fecc1a56f
* big transformation of Tai_[const_]Symbol.Create[data]name*
2004-03-02 00:36:32 +00:00
mazen
f02d3cfc4f
* symaddr ==> refaddr to follow the rest of compiler changes
2004-02-27 13:27:28 +00:00
peter
8c5b0f7d82
* first try to get cpupara working for x86_64
2004-02-04 22:01:13 +00:00
peter
47f08937e4
* use localalign info for alignment for locals and temps
...
* sparc fpu flags branching added
* moved powerpc copy_valye_openarray to generic
2004-01-12 22:11:38 +00:00
peter
42c6e9323b
* sparc updates, mostly float related
2004-01-12 16:39:40 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +00:00
mazen
e0303f16a7
* new TRegister definition applied
2003-12-19 14:38:03 +00:00
mazen
247effd0cc
+ added uses_registers overloaded method for sparc
2003-12-09 09:44:22 +00:00
mazen
105806e6e7
+ added fake MM Registers support because of generic code need it.
2003-10-29 15:18:33 +00:00
peter
b224d87ea5
* added more register functions
2003-10-24 15:20:37 +00:00
mazen
301f8978ae
* rg.[un]GetRegister* ==> [Un]Get[*]Register
2003-10-24 11:14:46 +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
dfd282aac6
* flags2reg fixed
...
* fixed 64bit not
2003-09-14 21:35:52 +00:00
peter
d76dc1047e
* updates for new ra
2003-09-14 19:19:04 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
peter
1b633246b9
* sparc fixes
2003-07-08 21:23:24 +00:00
peter
d03fd8f7e0
* operand order of cmp fixed
2003-07-06 22:10:13 +00:00
peter
32d076480b
* framepointer fixes for sparc
...
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
peter
1e47d6ffe0
* delay slot NOPs and comments added
...
* a_loadaddr_ref_reg fixed and optimized to reuse passed register
if it is not used by the ref
2003-07-03 21:09:53 +00:00
peter
b7d99ec934
* paraloc splitted in callerparaloc,calleeparaloc
...
* sparc calling convention updates
2003-07-02 22:18:04 +00:00
peter
f50aba2839
* a_loadaddr_ref_reg fixed
2003-06-17 16:35:56 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
peter
a0b9306652
* newra compiles for sparc
2003-06-12 16:43:07 +00:00
mazen
4af28e59cc
+ added size of destination in code gen methods
...
+ making g_overflowcheck declaration same as
ancestor's method declaration
2003-06-04 20:59:37 +00:00
peter
230a14ff68
* getregisterfpu size parameter added
...
* op_const_reg size parameter added
* sparc updates
2003-06-01 21:38:06 +00:00
peter
7b3095fe27
* reference fixes
2003-06-01 01:04:35 +00:00
peter
790e125329
* register fixes
2003-05-31 01:00:51 +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
florian
a8eb2ab740
* started to fix and clean up the sparc port
2003-05-28 23:18:31 +00:00
mazen
a6880bcaa4
* added 64 bit value support to fix a problem in RTL
2003-05-26 22:04:57 +00:00
florian
995f7e0f11
* fix some small flaws which prevent sparc linux system unit from compiling
...
* some reformatting done
2003-05-23 22:33:48 +00:00
florian
1770c1db0f
* fixed sparc compilation partially
2003-05-22 16:11:22 +00:00
mazen
518e7109a5
* invalid genrated code for CASE statement fixed
2003-05-07 15:04:30 +00:00
mazen
6b490e7de4
* Invalid genrated code : A_JMPL changed to A_BA
2003-05-06 20:25:20 +00:00
mazen
47ba6c2c4e
* fixed a bug in a_load_const_reg related to max 13bit value limit
...
for immediat value ==> use of A_SETHI for greater values
2003-05-06 15:02:40 +00:00
mazen
e3431c55d9
* fixed bug of output generated assembler for a_cmp_const_ref_label
2003-04-29 11:58:21 +00:00
mazen
fad91e6369
+ NOP after conditional jump instruction to prevent delay slot execution
2003-04-28 09:44:42 +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
mazen
2a961db56e
* fixing an LD operation without refernce in loading address parameters
2003-03-16 20:45:45 +00:00
mazen
a33dd56d81
* fixing index overflow in handling new registers arrays.
2003-03-10 21:59:54 +00:00
mazen
8cb2ac6714
* code re-aligned 2 spaces
2003-02-25 21:41:44 +00:00
daniel
86bcea6ef5
* Code generator converted to new register notation
...
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
mazen
ed1ba5dc1c
* asm condition generation modified by TAiCpu.SetCondition
2003-02-18 22:00:20 +00:00
mazen
92f035d47f
* fixing run time errors related to unimplemented abstract methods in CG
...
+ giving empty emplementations for some RTL functions
2003-02-05 21:48:34 +00:00