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
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
florian
b8ab3d48f6
* fix compilation on non avr/arm architectures
...
git-svn-id: trunk@22093 -
2012-08-15 16:02:36 +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
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
florian
bd47ba6ba4
* the address of complex inline parameters can be hold always in a register
...
git-svn-id: trunk@22076 -
2012-08-13 15:09:11 +00:00
florian
5b90a02e75
* inherit nf_write/nf_modify in tcallnode.replaceparaload also when replacing parameters
...
git-svn-id: trunk@22075 -
2012-08-13 15:06:16 +00:00
florian
ecb037ad79
+ tarminnode.pass_1 to set expectloc correctly
...
git-svn-id: trunk@22074 -
2012-08-13 15:03:35 +00:00
florian
d2aa35e9de
* throw an internal error if code generation depends on expectloc but expectloc and real loc do not match
...
git-svn-id: trunk@22073 -
2012-08-13 15:02:55 +00:00
florian
dd18d0bd4d
* write flags in tnode.printnodeinfo
...
git-svn-id: trunk@22072 -
2012-08-13 14:50:37 +00:00
sergei
45d27ef82e
* Relocating common symbols needs adjusting by symbol size only on DJCOFF targets, not on PECOFF ones.
...
git-svn-id: trunk@22068 -
2012-08-13 09:31:49 +00:00
sergei
de34f58284
* Update instruction segment prefix when copying operands from another instruction, Mantis #18113 .
...
git-svn-id: trunk@22067 -
2012-08-13 04:51:28 +00:00
Jonas Maebe
ed8087c71a
* check with parameters that must be followed by either nothing or a +/-,
...
are indeed never followed by other characters (prevents typos such as
-EnabledFeature instead of -dEnableFeature from simply switching of
linking)
git-svn-id: trunk@22065 -
2012-08-12 13:30:36 +00:00
florian
33f287d320
+ tarminnode.in_smallset making use of tst
...
git-svn-id: trunk@22064 -
2012-08-11 22:10:45 +00:00
florian
c1bca748ee
* factored out tcginnode.in_smallset
...
* indention changed to common compiler style
git-svn-id: trunk@22063 -
2012-08-11 22:07:36 +00:00
florian
19debd87cc
* start with a qword aligned frame pointer to enable more ldrd/strd optimizations
...
git-svn-id: trunk@22061 -
2012-08-11 15:12:19 +00:00
florian
371ef7bada
* cover more cases in AlignedToQWord
...
git-svn-id: trunk@22060 -
2012-08-11 15:11:43 +00:00
florian
db7e029574
* strd/ldrd optimization might be only done on dword operations
...
git-svn-id: trunk@22059 -
2012-08-11 15:11:10 +00:00
florian
8c45a909be
+ support ldr/ldr -> ldrd and str/str -> strd optimization where appliable
...
git-svn-id: trunk@22058 -
2012-08-11 11:45:54 +00:00
florian
49246b6263
* make textrec/filerec unpacked, this improves the code significantly on arm etc.
...
git-svn-id: trunk@22057 -
2012-08-10 21:17:50 +00:00
florian
2c122a9bf6
* inherit modification flag from load nodes when creating temp nodes when inlining, dfa/cse need this information
...
git-svn-id: trunk@22056 -
2012-08-10 21:16:54 +00:00
florian
aadf6da14f
* better naming of CPU flag strings
...
git-svn-id: trunk@22055 -
2012-08-09 20:32:18 +00:00
florian
1c2ed53735
* updated comments to reflect latest changes to cse
...
git-svn-id: trunk@22054 -
2012-08-09 20:18:04 +00:00
florian
4d86d25c6c
* -O4 switch for optimizations which are correct but which might have unexpected effects
...
like field reordering (possible problems cracker classes) or using ebp as normal register (broken
stack traces from dump_stack)
+ niln is also valid in a cse domain
* parameters passed by reference shall have a complexity >1
* load nodes from outer scopes shall have a complexity >1
* better cse debugging
+ more node types added to cse
* consider parameters passed by reference in cse
* take care of cse in parameters in simple cases
git-svn-id: trunk@22050 -
2012-08-09 18:58:54 +00:00
sergei
95535ea845
- Do not create any default object sections. On targets with section-based smartlink these sections remain empty and only cause linker to do useless job of removing them. The same happens when loading object files because duplicate section names are allowed at that time. On targets without smartlink they don't stay empty, but the internal assembler creates sections when required, so not creating initial sections effectively doesn't change anything.
...
git-svn-id: trunk@22049 -
2012-08-09 17:12:39 +00:00
florian
03071709a9
* the transformation (a or/and b) or/and c into a or/and (b or/and c) can be applied for booleans as well
...
git-svn-id: trunk@22041 -
2012-08-08 21:21:45 +00:00
florian
b330bba0bc
+ introduce -Oofastmath
...
* limit the application of the tree transformation introduced in r21986 to safe cases and -Oofastmath
git-svn-id: trunk@22040 -
2012-08-08 19:35:45 +00:00
florian
8fd84376d7
* msg files regenerated
...
git-svn-id: trunk@22039 -
2012-08-08 19:26:36 +00:00
florian
fb7f25f410
* removed wrong -N switch (switch is not used) description
...
git-svn-id: trunk@22037 -
2012-08-08 17:02:05 +00:00
florian
ecdec2e431
* disable reg. allocator optimization introduced in r21812 for now because it caused some trouble, see #22405
...
git-svn-id: trunk@22036 -
2012-08-08 16:29:03 +00:00
masta
aa21845cd9
Small optimization for OP_AND on ARM
...
Especially with 64bit operators the CG sometimes generates:
and r0, r1, #0
Which just clears r0 and is equivalent with
mov r0, #0
git-svn-id: trunk@22032 -
2012-08-08 06:44:20 +00:00
florian
7513291ad8
* generate different code for OS_S8 -> OS_16 conversion which might fold better, idea by Nico Erfurth
...
git-svn-id: trunk@22027 -
2012-08-07 19:36:46 +00:00
Jonas Maebe
4d31fbc31d
* also allow conversion of niln to forward-defined pointerdef
...
(mantis #22593 )
git-svn-id: trunk@22026 -
2012-08-07 11:23:00 +00:00
Jonas Maebe
a63a603cc1
* allow conversion from niln to not-yet-fully-resolved classrefdefs
...
(mantis #22593 )
git-svn-id: trunk@22025 -
2012-08-07 09:56:08 +00:00
masta
6529307d9e
Don't emit useless AND/BICs in ARM CG
...
In certain cases the CG would emit something like
bic r1, r0, #0
As BIC is clearing the specified bits this is equivalent to
mov r1, r0
This patch changes the CG to emit the mov instead which the register
allocator will hopefully remove most of the time.
git-svn-id: trunk@22024 -
2012-08-07 06:46:45 +00:00
masta
9e039936bf
Support more operators in FoldShiftProcess on ARM
...
Now we can also fold shifts into teq, tst, cmp, cmn instructions.
git-svn-id: trunk@22023 -
2012-08-07 06:46:32 +00:00
florian
b20c4cfe87
* replace is_written by using actualtargetnode
...
git-svn-id: trunk@22022 -
2012-08-06 20:26:23 +00:00
Jonas Maebe
aad3ce960a
* give an error when trying to give a parameter of a non-simple type a
...
default value (mantis #22343 )
* give an error when specifying an invalid default value (e.g. a
floating point number for a longint parameter)
git-svn-id: trunk@22021 -
2012-08-06 20:13:20 +00:00