Commit Graph

180 Commits

Author SHA1 Message Date
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
mazen
0de4838d36 - internal errors rmoved from a_loar_reg_reg when reg sizes differs from 32 2003-01-22 22:30:03 +00:00
mazen
c3321868d5 * many stuff related to RTL fixed 2003-01-20 22:21:36 +00:00
daniel
55a161bbbf * Tregister changed into a record 2003-01-08 18:43:56 +00:00
mazen
c20be82919 * adding unequaln node support to sparc compiler 2003-01-07 22:03:40 +00:00
mazen
a3aea23c2e * fixing bugs related to load_reg_ref 2003-01-06 22:51:47 +00:00
mazen
215880afe8 * fixing several bugs compiling the RTL 2003-01-05 21:32:35 +00:00