Jonas Maebe
4e9c54278e
* the function result of constructors always is self, always is valid and is
...
not stored in procdef.funcretsym -> fix check so that SSA is not performed
on it in constructors when exit is used
git-svn-id: trunk@26650 -
2014-02-02 09:09:44 +00:00
florian
e6b68d19c8
* reordered decision how arguments for inlining are handled
...
* improved comments for inline argument handling
* replace arguments more aggressively with a copy of their original node tree when inlining
git-svn-id: trunk@26649 -
2014-02-01 22:26:23 +00:00
Jeppe Johansen
07b2982e77
Don't do ARM FoldShiftLdrStr peephole optimization if there's an offset in the reference.
...
Use UXTH+UXTB instructions instead of two shifts on processors that supports that.
Eliminate internalerror when constant pointers are typecast as arrays.
git-svn-id: trunk@26647 -
2014-02-01 13:29:35 +00:00
florian
2a7dcf6c7b
* formatting
...
git-svn-id: trunk@26646 -
2014-02-01 13:08:30 +00:00
florian
e3f9982ee1
* make_not_regable is a matter of code generation so do it in pass_1
...
git-svn-id: trunk@26645 -
2014-02-01 13:08:28 +00:00
florian
fbcfb63826
+ implement tcasenode.pass_typecheck
...
git-svn-id: trunk@26644 -
2014-02-01 13:08:26 +00:00
florian
d71bfe4c6f
* var parameters can be put in registers if the callee is inlined
...
git-svn-id: trunk@26643 -
2014-02-01 13:08:24 +00:00
florian
cd6f4d4469
* fix tsubscriptnode to handle left.location being an fpu or mm register as well.
...
git-svn-id: trunk@26642 -
2014-02-01 13:08:21 +00:00
Tomas Hajny
77967432ef
* always use forward slashes in path to fpmake similarly to paths to other tools in Makefiles
...
git-svn-id: trunk@26641 -
2014-02-01 00:11:09 +00:00
masta
81517fdf70
Rerun peephole optimizers on the whole block
...
Up until now if a peephole optimizer matched we've only restarted from
the current instruction. This patch restarts optimizations on the whole
block if the previous run had at least one match.
As this can take considerable time this will only be enabled if -O3 or
higher is specified.
git-svn-id: trunk@26640 -
2014-01-31 23:21:52 +00:00
marco
4fa8998541
* add SMsgDlgClose, Patch by stocki Mantis #25616
...
git-svn-id: trunk@26638 -
2014-01-31 19:56:50 +00:00
masta
3f8549365a
Don't schedule LDRD on ARM
...
The load scheduler does not handle LDRD correctly right now, but it does
not prevent A_LDR with PF_D set from beeing scheduled.
git-svn-id: trunk@26637 -
2014-01-30 21:53:03 +00:00
florian
28a8dc42c6
* fix tcgx86.a_op_reg_reg on x86-64 and make use of it
...
git-svn-id: trunk@26636 -
2014-01-30 20:24:41 +00:00
florian
7d7bf1d877
+ make use of SHLX/SHRX on CPUs supporting BMI2
...
git-svn-id: trunk@26635 -
2014-01-30 20:24:39 +00:00
florian
8fba876904
* apply cse to static symbols on x86-64 as well, if their address can be stored
...
git-svn-id: trunk@26634 -
2014-01-30 20:24:36 +00:00
florian
d8c0f11ff9
+ cs_userbp optimizer switch, so on x86-64 the compiler can make use of rbp if it is not needed as frame pointer
...
git-svn-id: trunk@26633 -
2014-01-30 19:44:17 +00:00
florian
a3f58e84be
* rbp can be used for normal purpose under certain conditions so it shouldn't interfere with all other registers
...
git-svn-id: trunk@26632 -
2014-01-30 19:44:14 +00:00
florian
ecdfe75841
* tests fail if dead values are optimized so disable dead value optimization for the tests
...
git-svn-id: trunk@26631 -
2014-01-30 19:44:12 +00:00
florian
546f4a5d46
* force records with LOC_CONSTANT into memory when they are subscripted
...
git-svn-id: trunk@26630 -
2014-01-30 19:44:09 +00:00
florian
1d73f49330
* do not force the index location to a register for vec. nodes if the index is already in a register
...
git-svn-id: trunk@26629 -
2014-01-30 17:34:35 +00:00
florian
cd235d8409
+ simplify shl/shr x, if (x mod bitsizeof(left))=0
...
git-svn-id: trunk@26628 -
2014-01-30 17:34:33 +00:00
florian
b1f54b2853
* indentation fixed
...
git-svn-id: trunk@26627 -
2014-01-30 17:34:31 +00:00
florian
8989a40b4f
* more flags to mark changes fixed
...
git-svn-id: trunk@26626 -
2014-01-30 17:34:28 +00:00
florian
809549a31f
* addr nodes can be also considered in cse
...
git-svn-id: trunk@26625 -
2014-01-30 17:19:06 +00:00
florian
3a11dd1055
* create the addr node for cse with create_internal to avoid errors when taking the address of a temp.
...
git-svn-id: trunk@26624 -
2014-01-30 17:19:04 +00:00
florian
fc7dc9e54c
* do cse after the init/final code has been inserted, this might enable new cse opportunities
...
git-svn-id: trunk@26623 -
2014-01-30 17:19:01 +00:00
lacak
c4a981fa8e
fcl-db: bufdataset: TBufDataset autoincrement fields (ftAutoInc) are not restarted when dataset is closed and again reopened. See bug #25628
...
git-svn-id: trunk@26622 -
2014-01-30 09:03:40 +00:00
lacak
03e76b5f8b
fcl-db: bufdataset: Check if blob field is not ReadOnly when blob stream is created (in bmWrite mode). Bug #25648
...
git-svn-id: trunk@26621 -
2014-01-30 08:19:52 +00:00
Jeppe Johansen
257b1affaa
Fixed previous fix of LsrAnd2Lsr optimization.
...
Added an extra condition for <ARMv6 processors in MLA/MLS optimization.
git-svn-id: trunk@26620 -
2014-01-29 22:22:58 +00:00
Jeppe Johansen
f773334374
Fixed LsrAnd2Lsr peephole optimization for ARM.
...
git-svn-id: trunk@26619 -
2014-01-29 21:35:28 +00:00
Jonas Maebe
859676d7d3
* fixed r26519 for darwin/x86-64, see comments (mantis #25644 )
...
git-svn-id: trunk@26618 -
2014-01-29 21:26:45 +00:00
Jonas Maebe
c05da62b0e
* detect static data use by record methods and methods of nested classes/
...
records, so we avoid inlining them (mantis #25598 )
git-svn-id: trunk@26617 -
2014-01-29 21:26:38 +00:00
Jonas Maebe
b611882337
* some minor formatting fixes
...
git-svn-id: trunk@26616 -
2014-01-29 19:26:17 +00:00
Jonas Maebe
a6d28b5630
* pass on the "eval" state (whether or not subexpressions should be evaluated)
...
when encountering a "(" in a preprocessor expression (broken after r25465,
mantis #25296 )
git-svn-id: trunk@26615 -
2014-01-29 19:26:12 +00:00
Jonas Maebe
2f741121e9
* don't give an internal error when freeing an error token in the preprocessor
...
(mantis #25573 )
git-svn-id: trunk@26614 -
2014-01-29 19:26:03 +00:00
Jeppe Johansen
3b4f59c316
Fixed MLA/MLS peephole optimization and moved it to the generic ARM peephole optimizer.
...
git-svn-id: trunk@26613 -
2014-01-29 17:28:13 +00:00
Jeppe Johansen
184baa3f99
Fixed invalid peephole optimization of ADD/SUB(SP) instructions for ARMv7*M targets.
...
git-svn-id: trunk@26612 -
2014-01-29 17:12:57 +00:00
lacak
1034503c5d
fcl-db: bufdataset: improve rev.26604. do not use Field.SetData in BlobStream constructor, because SetData also calls Validate and generates deFieldChange. Which is too early in constructor. These events must be generated after data will be written (in fact deFieldChange is called in BlobStream destructor and Validate is not called in current implementation).
...
Instead of Field.SetData I use direct write to record buffer.
Bug #25648
git-svn-id: trunk@26611 -
2014-01-29 09:22:37 +00:00
Jonas Maebe
2adfb6cdda
* don't endlessly recurse when printing the typename of a procvardef that
...
refers to itself via a pointerdef in its parameter or result type(s)
(mantis #25551 )
git-svn-id: trunk@26610 -
2014-01-28 20:14:31 +00:00
Jonas Maebe
6d5bef3e1d
* removed code duplication in tpointerdef.GetTypeName
...
git-svn-id: trunk@26609 -
2014-01-28 20:14:28 +00:00
Jonas Maebe
89d97a3c2e
* only consider tc_pointer_to_array typeconversions to determine whether a
...
pointer->array type conversion implies an implicit dereference operation
(mantis #25622 )
git-svn-id: trunk@26608 -
2014-01-28 20:14:24 +00:00
Jonas Maebe
9c4505045b
* fixed formatting
...
git-svn-id: trunk@26607 -
2014-01-28 20:14:10 +00:00
masta
9e0af11ad8
Rerun the peephole optimizer after removing the current instruction.
...
This lets the optimizer pickup on more possible optimizations.
git-svn-id: trunk@26606 -
2014-01-28 16:00:51 +00:00
masta
57ff589ec7
Always set p to the next instruction after removing p from asml.
...
Some time ago we introduced GetNextInstructionUsingReg, which might
return an instruction a couple of instructions away from our current
location. Most of the code then just returned the new instruction (hp1)
instead of the instruction following p. This could prevent the peephole
optimizer from finding possible optimizations.
git-svn-id: trunk@26605 -
2014-01-28 16:00:47 +00:00
lacak
8e6fcd876c
fcl-db: bufdataset: when data are written to BLOB field (using TBufBlobStream) assign new write blob buffer to BLOB field in record buffer. So new data are there before Post.
...
(setting FieldByName('blob').AsString := '...' does not save data to field until record is posted)
Bug #25648
git-svn-id: trunk@26604 -
2014-01-28 13:30:27 +00:00
masta
c644503daf
Add MovLdr2Ldr peephole optimizer for ARM
...
The existing LdrLdr2LdrMov optimizer will generate a lot of
sequences like this:
ldr regA, [...]
mov regB, regA
ldr regB, [regB, ...]
this now gets changed to
ldr regA, [...]
ldr regB, [regA, ...]
this saves an instruction and might open up more possibilities for the load scheduler.
git-svn-id: trunk@26603 -
2014-01-28 13:20:35 +00:00
masta
77d12f61a2
Handle LDRD and STRD correctly in RegInInstruction for ARM
...
LDRD and STRD only have the first even numbered register in their instruction operands,
this additional code will also check for the register following it.
Example:
ldrd r0, [r13]
The old code will only detect r0 as in use, not the implicit r1.
git-svn-id: trunk@26602 -
2014-01-28 13:20:26 +00:00
lacak
b55c4eec60
fcl-db: bufdataset: formatting
...
git-svn-id: trunk@26601 -
2014-01-28 13:20:16 +00:00
michael
b5a2b3860b
* Added AddEmptyStrings to ExtractStrings (bug 25633)
...
git-svn-id: trunk@26600 -
2014-01-28 08:38:29 +00:00
michael
b023e30164
* Only resize TStringStream.Datastring in case the string will grow because of the write operation
...
git-svn-id: trunk@26599 -
2014-01-28 08:37:49 +00:00