Commit Graph

37468 Commits

Author SHA1 Message Date
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
svenbarth
7332a0f801 ninl.pas, tinlinenode.pass_typecheck: an intrinsic which has a generic type parameter as argument is left as is (e.g. a call) and thus this needs to be respected when typechecking a SizeOf. Fixes Mantis #21592.
git-svn-id: trunk@21497 -
2012-06-06 14:41:12 +00:00
svenbarth
bf9cb352b3 ptype.pas, single_type: If the generic dummy type is used in mode Delphi then generate an error. This fixes Mantis #21363.
git-svn-id: trunk@21496 -
2012-06-06 13:15:18 +00:00
Mattias Gaertner
a5e05d0d65 fpimage: tiff: fixed writing bits per channel
git-svn-id: trunk@21494 -
2012-06-06 00:01:41 +00:00
Tomas Hajny
95bb7a9129 * don't check for returned string in case of wildcards and multiple matches (order depends on the underlying filesystem and not guaranteed)
git-svn-id: trunk@21493 -
2012-06-05 22:24:57 +00:00
sergei
7d3294b504 * Moved 4 procedures for basic reading/writing TObjSection contents into ogcoff.pas, so they don't have to be reimplemented for every output format.
git-svn-id: trunk@21492 -
2012-06-05 19:52:40 +00:00
michael
efe5362670 * Fixed bug #19376: when quoting, quote character should be doubled
git-svn-id: trunk@21491 -
2012-06-05 18:43:55 +00:00
michael
f97c4b7b57 * Applied patch from Reinier Olislaghers to quote memo fields (bug 19759)
git-svn-id: trunk@21490 -
2012-06-05 18:35:22 +00:00
Mattias Gaertner
54ba30ec10 fpimage: tiff: write tiles
git-svn-id: trunk@21489 -
2012-06-05 18:33:33 +00:00
Jonas Maebe
8329e60d28 * also support running the "full" and "fulldb" targets with -jX by
serializing their individual steps

git-svn-id: trunk@21488 -
2012-06-05 14:47:41 +00:00
michael
a0facbf1af * Applied rename patch from Luiz Americo
git-svn-id: trunk@21487 -
2012-06-04 19:04:44 +00:00
sergei
5b035afc9b * sizeof(tagVariant) should be 24 for 64 bit targets, so it is assignment-compatible with Variant type. Resolves #22050.
git-svn-id: trunk@21486 -
2012-06-04 18:22:36 +00:00
Mattias Gaertner
71f5e86a7f fcl-image: tiff: register handler, write hostname, maker, model, software
git-svn-id: trunk@21485 -
2012-06-04 17:09:38 +00:00
sergei
263b46be86 * ogelf.pas: Changed MaybeSwap* into procedures, makes them more suitable for reuse in the upcoming reader (and reduces amount of copying while writing, too).
git-svn-id: trunk@21484 -
2012-06-04 10:27:14 +00:00
Mattias Gaertner
ca0cc29a26 fcl-image: tiff: reading CMYK, handling of unorderd tags, alpha mode 1, multiple pages, tiles
git-svn-id: trunk@21483 -
2012-06-04 09:39:09 +00:00
florian
31b1678757 * write parameter refs to ppu (only 1=used; 0=unsed), fixes parameter usage checking of inlined procedures loaded from units
git-svn-id: trunk@21482 -
2012-06-03 18:56:44 +00:00