florian
7599de416d
* patch by Nico Erfurth: Reworked MatchOperand in ARM Peephole Optimizers
...
Added top_ref comperator which uses RefsEqual.
Reworked the code for easier readability by using a case statement.
git-svn-id: trunk@21569 -
2012-06-09 17:25:32 +00:00
sergei
e0deb4cc99
* Fixed building with OPT="-dTEST_WIN64_SEH -O2" after r21454. It is not yet possible to omit rbp-based stack frames if using SEH on Win64.
...
git-svn-id: trunk@21556 -
2012-06-08 18:29:10 +00:00
Mattias Gaertner
7d2be3635f
fcl-image: tiff: reader+writer: deflate compression
...
git-svn-id: trunk@21549 -
2012-06-08 11:56:05 +00:00
Jonas Maebe
e7320ee729
* retry close() in fpclosedir() when it returns EINTR
...
git-svn-id: trunk@21548 -
2012-06-08 11:14:52 +00:00
marco
27922875b4
* Patch from Ludo, follow up to r21474 add more dependent units (stdole2)
...
and fix resourcestring registration.
git-svn-id: trunk@21547 -
2012-06-08 11:09:31 +00:00
pierre
2b90b444bf
Differentiate mips/mipsel default system macros
...
git-svn-id: trunk@21546 -
2012-06-08 10:08:24 +00:00
pierre
9fc6f91cd0
Set correct source info for mips/mipsel
...
git-svn-id: trunk@21545 -
2012-06-08 10:07:46 +00:00
pierre
68367ea82e
* Do not use lo(ofs) in fpmmap id TsysParam type is as large as off_t type and suppress warning
...
git-svn-id: trunk@21544 -
2012-06-08 09:53:36 +00:00
pierre
594a0e6217
* Adapt to mipsel compiler defining cpumipsel and cpumipsel32 but not cpumips anymore, one missing
...
git-svn-id: trunk@21543 -
2012-06-08 09:43:09 +00:00
pierre
651589c9a4
* Adapt to mipsel compiler defining cpumipsel and cpumipsel32 but not cpumips anymore
...
git-svn-id: trunk@21542 -
2012-06-08 09:34:36 +00:00
pierre
be67af4374
* Adapt to mipsel compiler defining cpumipsel and cpumipsel32 but not cpumips anymore
...
git-svn-id: trunk@21541 -
2012-06-08 09:33:03 +00:00
michael
4b8ffef650
* Patch from Ludo Brands to fix memory leak (bug 22228)
...
git-svn-id: trunk@21540 -
2012-06-08 08:33:28 +00:00
pierre
b21198a14a
* Fix error in comment in previous commit
...
git-svn-id: trunk@21539 -
2012-06-07 23:23:52 +00:00
pierre
93e0dd9c2f
* Patch from Fuxin Zhang: other mips and mipsel CPUs changes
...
git-svn-id: trunk@21538 -
2012-06-07 23:20:06 +00:00
pierre
22eae1b337
* Stack setup for MIPS and MIPSEL
...
git-svn-id: trunk@21537 -
2012-06-07 23:19:33 +00:00
pierre
4d8ebe5d1e
Do not modify $sp inside function body for mipscpu
...
git-svn-id: trunk@21536 -
2012-06-07 23:17:52 +00:00
pierre
c1269b0305
* Patch from Fuxin Zhang: po_assembler special code also disabled for mips and mipsel CPUs
...
git-svn-id: trunk@21535 -
2012-06-07 23:13:16 +00:00
pierre
ac38901d2a
* Patch from Fuxin Zhang: set first_pram_offset to 0 for mips and mipsel CPUs
...
git-svn-id: trunk@21534 -
2012-06-07 23:11:16 +00:00
pierre
1e1e0f969e
* Patch from Fuxin Zhang: remove cpuflags define for mips and mipsel CPUs
...
git-svn-id: trunk@21533 -
2012-06-07 23:08:18 +00:00
pierre
d6d237d688
* Patch from Fuxin Zhang: FPC_HAS_INTERNAL_SAR set for mips and mipsel CPUs
...
git-svn-id: trunk@21532 -
2012-06-07 23:07:32 +00:00
pierre
160037eb9d
* Patch from Fuxin Zhang: Mips specific MAP_XXX constants
...
git-svn-id: trunk@21531 -
2012-06-07 23:05:27 +00:00
pierre
a9be2fd137
* Patch from Fuxin Zhang: Mips specific MAP_XXX constants
...
git-svn-id: trunk@21530 -
2012-06-07 23:05:11 +00:00
pierre
6a985f1ece
* Patch from Fuxin Zhang: Mips specific MAP_XXX constants
...
git-svn-id: trunk@21529 -
2012-06-07 23:04:51 +00:00
pierre
bd060f4627
Stat record matching closer system include file
...
git-svn-id: trunk@21528 -
2012-06-07 23:03:41 +00:00
pierre
a7c9e4768e
* Patch from Fuxin Zhang
...
git-svn-id: trunk@21527 -
2012-06-07 23:02:29 +00:00
pierre
8259e69539
Non thread safe implementation of InterlockedXXX functions
...
git-svn-id: trunk@21526 -
2012-06-07 23:00:22 +00:00
pierre
f971854db6
* Patch from Fuxin Zhang
...
git-svn-id: trunk@21525 -
2012-06-07 22:59:02 +00:00
Jonas Maebe
50659b7e7f
* give an error if a routine definition defines default values for
...
parameters that do not appear in forward/interface definitions
(mantis #19434 )
* added test for #17136 already works
git-svn-id: trunk@21524 -
2012-06-07 22:36:39 +00:00
Jonas Maebe
df9c8652be
* add default parameter values defined in implementation also to interface
...
(they don't have effect when they only appear in the implementation, and
therefore this situation will cause an error in the future)
git-svn-id: trunk@21523 -
2012-06-07 22:36:15 +00:00
sergei
807a2f243f
* Fixed control flow after r21492, was causing IE 200602252 if compiling with "-g -Xg" (Mantis #22224 )
...
- Also removed accidentally committed debug code.
git-svn-id: trunk@21522 -
2012-06-07 22:30:50 +00:00
florian
6e8594a9af
* patch by Nico Erfurth: Minor fix for FoldShiftProcess peephole optimizer on ARM
...
Use UpdateUsedRegs and drop the check for reloading of the register, as
this is done in RegUsedAfterInstruction now.
git-svn-id: trunk@21520 -
2012-06-07 18:21:46 +00:00
florian
5b02a7cb9b
* patch by Nico Erfurth: Check for register reloading in RegUsedAfterInstruction on ARM
...
This slightly changes the semantics of RegUsedAfterInstruction.
We now check if the `current value` of the register will be used later.
It will do `the right thing` for all the normal use cases.
git-svn-id: trunk@21519 -
2012-06-07 18:20:35 +00:00
Mattias Gaertner
9636202165
fcl-image: tiff: read/write PageName, fixed typos
...
git-svn-id: trunk@21517 -
2012-06-07 17:23:16 +00:00
Mattias Gaertner
fd18003cd6
tiff: fixed decompressing packbits, skip jpeg tags
...
git-svn-id: trunk@21514 -
2012-06-07 16:09:33 +00:00
florian
72746e635d
* optimize TAOptObj.UpdateUsedRegs to avoid multiple passes through the asmlist
...
git-svn-id: trunk@21513 -
2012-06-07 15:19:55 +00:00
Jonas Maebe
572012fad3
* mark units as used in case only static symbols from inside object,
...
record or enum symtables are used (such as class helper methods)
(mantis #21808 )
git-svn-id: trunk@21512 -
2012-06-06 20:16:50 +00:00
florian
2a2a1e5788
* patch by Nico Erfurth: Optimize SwapEndian for ARM
...
The new version uses a pure pascal version for the 32bit case.
With the lastest compiler optimizations this generates optimal
4-instruction code which can be inlined. The rev-versions for
armv6+ are gone now, the inlineable pascal-code is faster than
the call-overhead for the rev-implementation.
The 64-bit versions received an updated assembly version which saves 4
cycles total on <armv6.
git-svn-id: trunk@21511 -
2012-06-06 19:46:06 +00:00
florian
45c70ec81c
* patch by Nico Erfurth: Support the usage of BIC instead of AND on ARM
...
BIC clears the specified bits, while AND keeps them. The usage of BIC
allows a broader range of shifterconsts to be used on the ARM cpu, often
saving a cycle.
Previously code like:
Data:=Data and $FFFFFF00
would result in
mvn r1, #255
and r0, r0, r1
This patch changes this to
bic r0, r0, #255
git-svn-id: trunk@21510 -
2012-06-06 19:45:26 +00:00
florian
fefc130efc
* patch by Nico Erfurth: Handle BIC properly in taicpu.spilling_get_operation_type
...
BIC was handled as a read only operation, which caused it to overwrite
live register content sometimes.
git-svn-id: trunk@21509 -
2012-06-06 19:44:53 +00:00
florian
8cae4c9f23
* patch by Nico Erfurth: Fix for MovStrMov Peephole optimizer on ARM
...
The loop checked for the wrong instruction for .opcode = A_STR. Making
the whole optimizer non functional but at least not destructive.
git-svn-id: trunk@21508 -
2012-06-06 19:44:20 +00:00
florian
83fb4c289d
* patch by Nico Erfurth: Implement FoldShiftProcess Peephole optimizer for ARM
...
This optimizer folds shift/roll operations into following data
instructions.
It will change code like:
mov r0, r0, lsl #16
add r1, r0, r1
into
add r1, r1, r0, lsl #16
Source registers will be reordered when necessary, also SUB/SBC will be
replaced with RSB/RSC and vice versa when reordering is required.
It could be expanded to support more operations like LDR/STR.
git-svn-id: trunk@21507 -
2012-06-06 19:43:36 +00:00
florian
5393efb128
* patch by Nico Erfurth: Support A_MOV and A_MVN in RedundantMovProcess
...
This changes the ARM Peephole optimizer RedundantMovProcess to also
recognize and modify something like the following sequence.
mov r0, r1
mov r0, r0, lsl #8
this would be changed into
mov r0, r1, lsl #8
git-svn-id: trunk@21506 -
2012-06-06 19:43:05 +00:00
florian
4ea1d22c5a
* patch by Nico Erfruth: Support BX for function returns on armv5+
...
BX is supported from ARMv4T onwards, but i don't have a armv4t device to
test it.
Using BX instead of mov pc,lr allows for a better pipeline utilization
by enabling the CPUs branch predictor to work properly.
git-svn-id: trunk@21505 -
2012-06-06 19:42:26 +00:00
Jonas Maebe
12553a9367
* don't give -CO warnings or hints for ordinal constants, because those
...
are already checked by range checking (and were checked wrongly by -CO
checking) (mantis #19581 )
git-svn-id: trunk@21504 -
2012-06-06 19:28:22 +00:00
Jonas Maebe
ca29bb10af
- zapped some gremlins in comments
...
git-svn-id: trunk@21503 -
2012-06-06 18:55:38 +00:00
Jonas Maebe
3414f91590
* minor reformatting, and removed superfluous assigned test (the value is
...
already used before that test)
git-svn-id: trunk@21502 -
2012-06-06 18:51:14 +00:00
Jonas Maebe
9412d4abd2
* add a reference to the procsym corresponding to the chosen overloaded
...
procdef, so that the unit containing it is marked as "used" (mantis #15966 )
Even better would be if the unit containing the originally found procsym
were not also marked as used, but that would require a significant
rewrite (all symbols found using symboltable helpers are automatically
marked by those routines)
git-svn-id: trunk@21501 -
2012-06-06 18:46:01 +00:00
Jonas Maebe
df99ef17b6
+ mfpvr, mfdcr, mtdcr, mfdec and mtdec opcodes (mantis #18878 )
...
git-svn-id: trunk@21500 -
2012-06-06 18:17:55 +00:00
Jonas Maebe
769a4ecc6a
* reduced complexity/running time of the test
...
git-svn-id: trunk@21499 -
2012-06-06 18:17:36 +00:00
svenbarth
aa0f1bdf26
pdecl.pas, readconstant: If we are parsing a constant declaration in a generic and we encounter an intrinsic then this intrinsic is left as is (thus the node p returned by comp_expr will be a inlinen instead of an expected ordconstn, stringconstn, etc.). Nevertheless we need to create a symbol for the constant (which isn't done otherwise). In the case of SizeOf a constant "0" will be created. This fixes Mantis #21593 .
...
git-svn-id: trunk@21498 -
2012-06-06 15:00:28 +00:00