Commit Graph

334 Commits

Author SHA1 Message Date
yury
4cabbe0e39 * Fixed compiler cycling with enabled range and overflow checking.
git-svn-id: trunk@11489 -
2008-07-29 21:11:03 +00:00
florian
66e015f48c * avoid shifter constant overflow on arm when optimizing two shifter operations into one
git-svn-id: trunk@11474 -
2008-07-28 15:51:58 +00:00
florian
fe7cba52dc + support of inlined ror/rol on arm
git-svn-id: trunk@11473 -
2008-07-28 15:48:38 +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
yury
a6eb251cee * Define dummy tcgarm.g_stackpointer_alloc to fix abstract warning.
* Suppressed unreachable code warnings.
* Now ARM compiler compiles without warnings and notes.

git-svn-id: trunk@11456 -
2008-07-23 13:22:36 +00:00
yury
0bcaf8845f * Fixed 'mixed signed/unsigned' warnings.
* Suppressed 2 unreachable code warnings.
* Now x86 compiler compiles without warnings and notes! It will be great to keep such state in future...

git-svn-id: trunk@11455 -
2008-07-23 13:16:46 +00:00
yury
a039dd6942 * Fixed warnings about hiding inherited method.
git-svn-id: trunk@11449 -
2008-07-23 11:51:19 +00:00
yury
bf454fad71 * Added function result for unimplemented methods to prevent warnings.
git-svn-id: trunk@11448 -
2008-07-23 11:47:03 +00:00
yury
451a290caf * Fixed 'mixed signed/unsigned' and pointer conversion warnings.
git-svn-id: trunk@11444 -
2008-07-23 11:17:27 +00:00
yury
491f0fa1d8 * Replaced all user defined warnings by TODO comments to reduce compiler noise.
git-svn-id: trunk@11443 -
2008-07-23 11:00:03 +00:00
yury
fd0ed50331 * Removed/commented more unused variables.
* Fixed some uninitialized variable warnings.

git-svn-id: trunk@11442 -
2008-07-23 10:48:53 +00:00
yury
6c6bf452ca * Fixed level 2 comment warnings.
git-svn-id: trunk@11441 -
2008-07-23 10:08:48 +00:00
yury
fcceb9cfa1 * Removed/ifdefed/commented unused local variables.
git-svn-id: trunk@11430 -
2008-07-20 23:00:31 +00:00
florian
67ef9f20ae * test for previous commit
* fixed wrapper generation for bigger offsets as well

git-svn-id: trunk@11059 -
2008-05-23 16:16:34 +00:00
florian
ea46cb4218 * take care of the maximum constant size when creating interface wrappers, resolves #10831
git-svn-id: trunk@11058 -
2008-05-23 16:02:17 +00:00
yury
60ecb64346 * Fixed loading of single floating point values from memory to register for ARM hardfloat.
git-svn-id: trunk@10826 -
2008-04-27 20:47:52 +00:00
yury
b9431c876e * More complete fix for bug #10515. Thanks to Jonas for suggestion.
* Fixed warnings in tcnvint6.pp

git-svn-id: trunk@10765 -
2008-04-23 08:22:27 +00:00
yury
88597d23c5 * Fixed tcgarm.a_load_ref_reg to load word values from location with alignment 2 using unaligned load.
git-svn-id: trunk@10754 -
2008-04-22 08:46:19 +00:00
yury
adaeb0fc73 * Strip result if inc/dec is performed in register on value less than 32-bit on ARM. (bug #10515)
* Updated tcnvint6 to test this issue.

git-svn-id: trunk@10753 -
2008-04-22 08:45:50 +00:00
yury
9222540e84 * Small optimization.
git-svn-id: trunk@10692 -
2008-04-18 11:46:39 +00:00
yury
95ea5d87dd * Fixed int to int conversion in ARM code generator.
+ Added new test to detect more bugs in int to int conversion.

git-svn-id: trunk@10691 -
2008-04-18 11:31:12 +00:00
yury
b70bf05ad5 * I hope it's proper fix for r10688.
git-svn-id: trunk@10690 -
2008-04-18 10:51:56 +00:00
yury
e71d631c24 * Fix for tw10233 for all CPUs.
git-svn-id: trunk@10688 -
2008-04-18 07:38:25 +00:00
yury
ec943198fd * Properly fill treference.alignment when variable is loaded by tcgloadnode. It allows code generator to insert unaligned handling if needed.
* Improved generic a_load_ref_reg_unaligned if ref alignment is 2.
* Improved unaligned load/store of register for ARM.
* It fixes passing records by value on ARM.
+ New test.

git-svn-id: trunk@10681 -
2008-04-16 23:01:20 +00:00
yury
771479e65c * Improved fix for bug #10233 for better Delphi compatibility and efficiency:
- Explicit typecasts like LongBool(byte_value) do not change ordinal value.
  - Explicit typecasts like ByteBool(longint_value) do not change ordinal value and can lead to data loss if longint_value is outside of ByteBool range.
  - Explicit typecasts like ByteBool(LongBool) handle type ranges correctly.
  - Updated test tw10233.pp. It is passed by Delphi as well.

git-svn-id: trunk@10672 -
2008-04-15 22:19:29 +00:00
yury
cf235145cb * Fixed a_load_reg_reg for arm.
* Fixed sign/zero-extension in second_int_to_bool for all CPUs. x86 and pppc were not affected by this bug, but I fixed it for all CPUs for consistency.
* cg/tcnvint1 is passed on arm now.

git-svn-id: trunk@10669 -
2008-04-15 20:44:27 +00:00
florian
951a202e5d * fix by Jan Bruns for #11042: improves reading of references on arm
git-svn-id: trunk@10625 -
2008-04-10 19:47:49 +00:00
florian
7ef191021f + check for location.loc<>expectloc in extdebug mode
* set expectloc properly for add nodes on arm

git-svn-id: trunk@10536 -
2008-03-23 10:18:33 +00:00
Jonas Maebe
62e66d2a56 * explicit typecasting of any ordinal type to a boolean of the same
size must happen without any mangling of the value (mantis #11027)
  * moved checking for signed-to-unsigned (or vice versa) type
    conversions in assignments from htypechk to ncnv (where there
    was already code for similar checks) and added support for
    bool_to_bool there as well

git-svn-id: trunk@10521 -
2008-03-21 14:44:58 +00:00
micha
6910b0ed40 * fix arm(eb) load/store of smaller than register sizes
git-svn-id: trunk@10500 -
2008-03-17 21:27:44 +00:00
florian
ed540dc7c1 * fixed copy&paste error in rev. 10460
git-svn-id: trunk@10462 -
2008-03-08 14:05:04 +00:00
micha
f70c24435d * fix int64 result passing on armeb
git-svn-id: trunk@10460 -
2008-03-08 13:02:33 +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
florian
90a3b20b48 Merged revisions 10168 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/avr

........
  r10168 | florian | 2008-02-03 10:56:10 +0100 (Sun, 03 Feb 2008) | 1 line
  
  * properties set
........

git-svn-id: trunk@10169 -
2008-02-03 09:59:37 +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
sekelsenmat
38048fd073 Small fix for symbian arm target.
git-svn-id: trunk@9376 -
2007-12-02 08:27:18 +00:00
florian
29766e5d81 + first additions for the arm eabi
git-svn-id: trunk@9157 -
2007-11-07 20:48:32 +00:00
florian
c3475dddc0 * handle case ranges properly for unsigned types with a non-zero base, resolves #10009
git-svn-id: trunk@8974 -
2007-10-28 17:06:02 +00:00
florian
1e618b499d * fixes unaligned load_ref_reg on little endian arm
git-svn-id: trunk@8972 -
2007-10-28 15:30:50 +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
florian
c77267e01f * more div n^2 optimization
git-svn-id: trunk@8867 -
2007-10-20 18:02:55 +00:00
florian
c57f44d75b + div 2^n optimization for arm
git-svn-id: trunk@8864 -
2007-10-20 17:42:29 +00:00
micha
bae0251549 * fix big endian arm loading (fixes issue #8752)
git-svn-id: trunk@8862 -
2007-10-20 14:31:08 +00:00
florian
9ab1a1c550 * allow mla to take 4 operands, resolves #9461
git-svn-id: trunk@8801 -
2007-10-14 18:08:49 +00:00
florian
fa0507ec2c * fixed compilation on arm in extdebug mode
git-svn-id: trunk@8771 -
2007-10-12 16:14:49 +00:00
peter
9f0ca44c94 * new tf_smartlink_library flag
* use create_smartlink[_sections|_library] to check what to 
    do for smartlinking

git-svn-id: trunk@8715 -
2007-10-01 16:55:08 +00:00
peter
6b8aed593f * remove registers{int/mmx/fpu} from firstpass
* small cleanups of unused variables in firstpass
  * node_resources_fpu() created to get an approximation of the
    required fpu registers
  * for the moment use node_complexity in the CG until the
    node_resource_int() is created

git-svn-id: trunk@8655 -
2007-09-26 21:12:01 +00:00
florian
039b513d93 * pass classes and interfaces by value if const is used, resolves #9674
git-svn-id: trunk@8484 -
2007-09-14 19:26:09 +00:00
florian
b984b2227f * improved constant loading for arm
git-svn-id: trunk@8429 -
2007-09-11 19:28:48 +00:00