Commit Graph

38009 Commits

Author SHA1 Message Date
masta
13e2572140 Remove unnecessary compiler version checks in rtl/arm/arm.inc
The CPUARM_HAS_* flags are never defined in 2.6, so there is no reason
to check for the compiler version.

git-svn-id: trunk@22128 -
2012-08-19 15:51:44 +00:00
Jonas Maebe
cf4a2bd392 * fixed java.lang.String and Pascal string comparisons after operator
overloading rewrite (consider java_jlstring to be "stringlike")

git-svn-id: trunk@22127 -
2012-08-19 13:57:48 +00:00
Jonas Maebe
b6db767ac4 * fixed uninitialized TJasminAssembler.ConstAssignmentValue() function result
git-svn-id: trunk@22126 -
2012-08-19 13:54:28 +00:00
Jonas Maebe
060e3ed4ee * changes from r21697, 21707, 21843, 21861, 21701, 21887, 21899 and 21900
to systemh.inc/system.inc/compproc.inc 'merged' into as of yet still
    JVM-specific copies of those files

git-svn-id: trunk@22125 -
2012-08-19 13:51:15 +00:00
Jonas Maebe
504544e173 * fixed null-termination in StringToWideChar() if the buffer is larger than
the string (mantis #22669)

git-svn-id: trunk@22124 -
2012-08-19 13:48:02 +00:00
Jonas Maebe
b353a2ff27 * fixed writing jvm type for string constants after r22020
git-svn-id: trunk@22123 -
2012-08-19 13:47:50 +00:00
Jonas Maebe
1c80388e00 * fixed missing pointer dereference of parameter passed to move()
(patch by ocean, mantis #22670)

git-svn-id: trunk@22122 -
2012-08-19 09:44:56 +00:00
Jonas Maebe
c29e6bbcb8 * disabled assembler implementations of fpc_ansistr_decr_ref/
fpc_ansistr_incr_ref for Darwin/ARM: they don't follow the Darwin/ARM
    ABI for function calls, the code already contains enough ifdefs and
    I don't want to spend time on maintaining OS-specific assembler
    implementations

git-svn-id: trunk@22121 -
2012-08-19 09:37:07 +00:00
Jonas Maebe
f5b1c64d36 * default to VFPv2 on Darwin/ARM (all iOS devices ever released until
now support it, and the VFPv2 code has been very stable for quite
    some time already)

git-svn-id: trunk@22120 -
2012-08-19 09:36:46 +00:00
florian
765fb18679 + add a description to the cpuflags where I know the exact meaning/definition
git-svn-id: trunk@22119 -
2012-08-17 20:45:46 +00:00
florian
c64b400764 * fix Makefile to work with make 3.82 by adding missing compiler commands
git-svn-id: trunk@22118 -
2012-08-17 20:33:09 +00:00
florian
312984cb4f * ifdef blx InterlockedExchange correctly
git-svn-id: trunk@22117 -
2012-08-17 20:30:19 +00:00
florian
54e2b40ab4 * revert the parameter type change of the last commit, it was an overleft from a failed fix attempt
git-svn-id: trunk@22116 -
2012-08-17 19:36:37 +00:00
florian
ba6ba52e7f * instruction scheduling is pretty slow so make it a level 3 optimization for now
git-svn-id: trunk@22115 -
2012-08-17 19:36:29 +00:00
florian
45eafd3e65 * fix MovMov optimization if the second mov is a mov rX,rX
git-svn-id: trunk@22114 -
2012-08-17 19:36:22 +00:00
florian
4b4e08c28b * fixes copy&paste errors when moving end of live pointers
git-svn-id: trunk@22113 -
2012-08-17 19:36:16 +00:00
florian
53a0d3e3a3 * fixed typo when checking live start of references
git-svn-id: trunk@22112 -
2012-08-17 19:36:10 +00:00
florian
5ceeb8aaa9 * enable scheduler when compiling at least with -O2
git-svn-id: trunk@22111 -
2012-08-17 19:36:04 +00:00
florian
a693fe9fb7 + implemented TCpuPreRegallocScheduler.SwapRegLive and make use of it to be able to reschedule instructions before register allocation
git-svn-id: trunk@22110 -
2012-08-17 19:35:59 +00:00
florian
f9dd5bf5e6 + live_start and live_end_properties
git-svn-id: trunk@22109 -
2012-08-17 19:35:51 +00:00
florian
c2d067940a * get rid of hash chars, modern tools and IDEs can use normal comments as documentation if needed
git-svn-id: trunk@22108 -
2012-08-17 19:35:46 +00:00
masta
6729164fcc Work around load latency in InterlockedExchange for ARM
An LDR will have two load latency cycles on most ARM implementations,
moving the
  mov r4, r0
two instructions away from the corresponding ldr will avoid the stalls.

git-svn-id: trunk@22107 -
2012-08-17 12:42:49 +00:00
florian
7e5b8584cf * set MaxOps to 4 for the optimizer because fpc generates now mla instructions
git-svn-id: trunk@22106 -
2012-08-17 12:38:59 +00:00
florian
e353222a8a * if the selected cpu type supports pld, provide and use only the pld variant
git-svn-id: trunk@22105 -
2012-08-17 10:37:36 +00:00
florian
354cac2bb6 + completed arm architectures
* ldrd/strd and pld collected under the edsp define

git-svn-id: trunk@22104 -
2012-08-17 10:37:27 +00:00
florian
7588896775 * make use of cpuflags in the arm compiler
* armv5te architecture

git-svn-id: trunk@22103 -
2012-08-17 10:37:17 +00:00
tom_at_work
38226169a9 Make use of "blx" instruction in fpc_ansistr_dec_ref conditional on CPUARM_HAS_BX, otherwise just use the "bl" instruction. Bug introduced in r22035. Fixes bug report 22632.
git-svn-id: trunk@22102 -
2012-08-17 08:28:08 +00:00
tom_at_work
7c56a9f34d Revert r22080 because it prevents crosscompilation.
git-svn-id: trunk@22101 -
2012-08-16 21:24:47 +00:00
Jonas Maebe
3983342648 * free temps created for case-of-string-statements
git-svn-id: trunk@22100 -
2012-08-16 19:22:23 +00:00
Jonas Maebe
f3ad4af343 * make sure valid_for_assign() returns false for inlined function bodies
(mantis #22613)

git-svn-id: trunk@22099 -
2012-08-16 19:22:17 +00:00
Jonas Maebe
e06d3a6e04 * raise an error when locate is used on a closed dataset (patch by
Claudio Romero, mantis #13938)

git-svn-id: trunk@22098 -
2012-08-16 17:53:09 +00:00
florian
3987c82bab * assign a complexity of 2 to float nodes because they usually involve a loading from memory
git-svn-id: trunk@22097 -
2012-08-15 18:28:47 +00:00
florian
41e8da998c * cast raise node only to a tertiary node in foreach, makes adding more tertiary nodes easier
git-svn-id: trunk@22096 -
2012-08-15 18:22:47 +00:00
florian
b78f9826fb * call AllocMem instead of GetMem/FillChar
git-svn-id: trunk@22095 -
2012-08-15 17:47:15 +00:00
michael
b26797e818 * Fixed memory leak in classes with interfaces
git-svn-id: trunk@22094 -
2012-08-15 16:14:09 +00:00
florian
b8ab3d48f6 * fix compilation on non avr/arm architectures
git-svn-id: trunk@22093 -
2012-08-15 16:02:36 +00:00
michael
3bc8bbf378 * Fixed to conform to new structures in pastree
git-svn-id: trunk@22092 -
2012-08-15 16:00:51 +00:00
florian
e6efbd36ad * compiler defined cpuflags instead of creating them during system unit compilation
git-svn-id: trunk@22091 -
2012-08-15 15:49:11 +00:00
florian
e4f89fe524 + introduce cpuflags for arm
git-svn-id: trunk@22090 -
2012-08-15 15:49:05 +00:00
florian
895aa0d752 * reworked cpuflags for avr
+ define cpuflags in options unit so user programs can access them

git-svn-id: trunk@22089 -
2012-08-15 15:48:59 +00:00
michael
9af6f49c02 * Finished try/except statements
git-svn-id: trunk@22088 -
2012-08-15 15:02:05 +00:00
sergei
f14e038172 + Implemented writeReloc_internal method for TElfObjSection.
+ TElfSymtab.writeInternalSymbol: added 'aValue' argument, needed for writing dynamic symbols.

git-svn-id: trunk@22087 -
2012-08-15 12:27:32 +00:00
sergei
ec56677927 + Added method TObjSection.writeReloc_internal to write relocations to given section+offset without need to have a symbol at target location.
* Optimized COFF importing code using the new method.
  - Don't create .text sections for imported variables.
  - Don't create .idata$6 sections for imports by ordinal.

git-svn-id: trunk@22086 -
2012-08-15 12:22:07 +00:00
michael
0801287956 * Adapted tests to use expression objects where needed
git-svn-id: trunk@22085 -
2012-08-15 12:21:52 +00:00
michael
06b092280e * Use expression objects in case and constants
git-svn-id: trunk@22084 -
2012-08-15 12:21:22 +00:00
michael
e9a339448a * Better Except handling
git-svn-id: trunk@22083 -
2012-08-15 10:52:21 +00:00
michael
4c47beb7b7 * Reworked raise parsing, now also supports raise X at Addr
git-svn-id: trunk@22082 -
2012-08-15 09:01:11 +00:00
tom_at_work
f252fd369e Tried to reorganize the ARM define mess in rtl/arm/arm.inc. Instead of requiring to enumerate all possible ARM variants each time a CPU feature is used, add a define of the format CPUARM_HAS_XXX and use that. Note that a better solution would be to properly implement the compiler cpuinfo infrastructure, however that is much more work.
+ CPUARM_HAS_BX is defined if the CPU supports the BX* instruction
  + CPUARM_HAS_REV is defined if the CPU supports the REV instruction. Note that you still have to check for compiler versions > 2.6.0 since the assembler reader of 2.6.0 does not understand that instruction.
  + CPUARM_HAS_IDIV is defined if the CPU supports the sdiv, udiv instructions. Use of this fixes a bug where previously these instruction were only used for armv7-m, while cortex3m cpus also support it.
  + CPUARM_HAS_LDREX is defined if the CPU supports the ldrex/strex instructions. Use of this fixes a bug with armv7(-a) cpus where this path has not been used.
  + SYSTEM_HAS_KUSER_CMPXCHG is defined if the system (mainly OS) support the kuser_cmpxchg functions. Use of this fixes a bug where ARMHF systems did not use it for synchronization (although ARMHF is armv7+ only, i.e. the LDREX path is used anyway)

git-svn-id: trunk@22081 -
2012-08-14 19:45:03 +00:00
tom_at_work
7b6bcd315f Pass FPCOPT to fpmkunit and fpmake compilation. This prevents build errors of these programs if the given FPCOPT options of the previously compiled RTL are incompatible to default options. Regenerated associated makefiles.
git-svn-id: trunk@22080 -
2012-08-14 19:09:17 +00:00
michael
9635787b5a * Added functionality to create fpdoc.css from internal copy
git-svn-id: trunk@22079 -
2012-08-14 18:47:57 +00:00