Commit Graph

14210 Commits

Author SHA1 Message Date
pierre
05a326a83e Make sure f2X+1 is also considered used if f2X is used
git-svn-id: trunk@22196 -
2012-08-22 22:49:53 +00:00
florian
3e9baa3f47 * check also register type in FindRegalloc
git-svn-id: trunk@22195 -
2012-08-22 19:52:43 +00:00
florian
a92ca7c456 * adjust the reg. allocations of the target register in RemoveSuperfluousMove
git-svn-id: trunk@22194 -
2012-08-22 19:52:37 +00:00
florian
3d7b603d11 * get rid or move the allocation of the replaced register if possible
git-svn-id: trunk@22193 -
2012-08-22 19:52:30 +00:00
florian
77e579f59f * RemoveSuperfluousMove uses FindRegDeAlloc to find out if the register used in the move can be removed
* RemoveSuperfluousMove fixes partially the register allocation changes caused by the mov

git-svn-id: trunk@22192 -
2012-08-22 19:52:23 +00:00
florian
6e62fbc3d2 * more consistent updates of used registers
+ FindRegDeAlloc searching for a register deallocation
* FindRegAlloc now returns the allocation object which was found

git-svn-id: trunk@22191 -
2012-08-22 19:52:15 +00:00
florian
e1a2b1859a * comments and explanations on tai_regalloc.keep field
* write/read tai_regalloc. field to/from ppu

git-svn-id: trunk@22190 -
2012-08-22 19:52:08 +00:00
florian
5fd457e586 * when determining of a register is used after an instruction, new allocs should not be taken into account
git-svn-id: trunk@22189 -
2012-08-22 19:52:03 +00:00
florian
07e26cfb12 + TUsedRegs.Update parameter IgnoreNewAllocs so new allocs of registers can be ignored during update
git-svn-id: trunk@22188 -
2012-08-22 19:51:54 +00:00
florian
b6608e716b + tai_regalloc.keep to force register deallocations to be keep
git-svn-id: trunk@22187 -
2012-08-22 19:51:47 +00:00
florian
c0425c48fd * make use of GetNextInstructionUsingReg
git-svn-id: trunk@22186 -
2012-08-22 19:51:40 +00:00
florian
f3f5be2af1 * RemoveSuperfluousMove should not mess with moves targetting lr or pc
git-svn-id: trunk@22185 -
2012-08-22 19:51:31 +00:00
florian
93eb20d407 + GetNextInstructionUsingReg
git-svn-id: trunk@22184 -
2012-08-22 19:51:19 +00:00
florian
55e6da6d28 * make cpubase for arm use inlining
git-svn-id: trunk@22183 -
2012-08-22 19:51:08 +00:00
florian
0c08ae8553 + RegUsedBetween
git-svn-id: trunk@22182 -
2012-08-22 19:50:55 +00:00
florian
4dee21c60e + NR_DEFAULTFLAGS and RS_DEFAULTFLAGS for all CPUs with flags added
git-svn-id: trunk@22181 -
2012-08-22 19:38:27 +00:00
florian
fa2da8c299 + rule to generate avr register include files
git-svn-id: trunk@22180 -
2012-08-22 19:37:58 +00:00
florian
d8161c185c + track usage of flags by using a new register RS_/NR_DEFAULTFLAGS
git-svn-id: trunk@22179 -
2012-08-22 19:37:51 +00:00
Jonas Maebe
1f2578077c * small correction to previous commit: the offset of DW_OP_bregx is signed
(since it's a hardcoded 0, that doesn't matter here in practice though)

git-svn-id: trunk@22177 -
2012-08-22 18:42:35 +00:00
Jonas Maebe
c8986f34fb * fixed debug information for call-by-reference parameters whose address
is located in a register (mantis #22399)

git-svn-id: trunk@22176 -
2012-08-22 18:21:37 +00:00
florian
3754efa682 + Lazarus project file for PowerPC64
git-svn-id: trunk@22175 -
2012-08-22 18:00:11 +00:00
Jonas Maebe
f9c6967c36 * fixed not(pasbool64) (has to be "xor 1" rather than "xor -1")
git-svn-id: trunk@22167 -
2012-08-21 20:04:19 +00:00
Jonas Maebe
288d1ec74a * support referencing "result" in nostackframe pure assembler routines if
the result location is a simple location (a single register/reference)
    (mantis #22490)
  * print an error when accessing "result" in a nostack pure assembler routine
    if the result location is not simple

git-svn-id: trunk@22166 -
2012-08-21 19:51:40 +00:00
florian
396a9cafa8 * use ptrsinttype instead of sinttype as code parameter for val: for "normal" 32/64 bit targets this does not matter,
for 8 bit targets like avr this makes code in theory useful for ansistrings etc.

git-svn-id: trunk@22161 -
2012-08-21 16:46:19 +00:00
florian
1cd6f2355b * don't copy const parameters passed by reference even if their complexity is >1,
this is handled by wrapcomplexinlinepara

git-svn-id: trunk@22160 -
2012-08-21 16:31:58 +00:00
sergei
d79511f96e + Basic ld script parsing capabilities (barely enough to parse glibc2.1 'libc.so' files, lacks any error handling).
+ Support linker input source grouping functionality.
* Promote TStaticLibrary to something like generic linker input statement, it can now hold regular ObjData or a group of other TStaticLibrary objects in addition to tarobjectreader.

git-svn-id: trunk@22155 -
2012-08-21 08:37:39 +00:00
florian
04034b6771 * avr uses a reduced buffer and file name length in textrecs and filerecs
* fixed file and text sizes for avr

git-svn-id: trunk@22147 -
2012-08-20 20:11:13 +00:00
florian
74d3c8cc57 * on i386-win32 when using stdcall calling conventions, records with a size of 1,2 and 4 are returned in al/ax/eax now, resolves #22675
git-svn-id: trunk@22146 -
2012-08-20 16:57:53 +00:00
florian
8c39b1eba8 * document tforeachprocmethod
git-svn-id: trunk@22134 -
2012-08-19 21:18:28 +00:00
florian
2a14394cf5 * cleaned up scheduler code, created own scheduler class to avoid unneeded passes through the assembler
git-svn-id: trunk@22133 -
2012-08-19 19:15:34 +00:00
florian
a3bf956c33 * improved main loop of TCpuPreRegallocScheduler.PeepHoleOptPass1Cpu
* reordered conditions in scheduler main loop so they abort potentially quicker

git-svn-id: trunk@22132 -
2012-08-19 19:13:49 +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
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
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
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
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
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
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