Jonas Maebe
9a797b9f49
* changed maxjumpalign:10 to 16
...
* changed (max)jumalign for Darwin/x86_64 from 0 to 16
git-svn-id: trunk@40681 -
2018-12-28 12:06:46 +00:00
florian
9c03c29856
* not all targets support the tls-model switch, use it only if section thread vars are used
...
git-svn-id: trunk@40680 -
2018-12-27 23:14:38 +00:00
florian
ce81e50907
* better code alignment for x86_64-win64 and x86_64-linux
...
git-svn-id: trunk@40679 -
2018-12-27 22:07:30 +00:00
florian
917de001d6
* patch (slighly modified) by Christo Crause to write 16 bit registers on avr in hi/lo order, resolves #34721
...
git-svn-id: trunk@40678 -
2018-12-27 21:41:36 +00:00
florian
a7c347fe56
* pass used tls model to the assembler
...
git-svn-id: trunk@40677 -
2018-12-27 20:54:14 +00:00
florian
7f5c2fa3aa
* (modified) patch by Gareth Moreton: Speed improvement in case blocks, resolves #0034762
...
This patch improves the compiler where "case" statements are concerned, using jump tables more often and creating more efficient machine code in some situations:
* If a case block only contains one branch (not including the else block), the initial range check is removed, since this becomes wasted effort.
* If the else block is empty, the else label is set to the end label - though this doesn't decrease the code size, it takes a bit of strain off the peephole optimizer.
* On -O2 and above, some node analysis is now done on the branch labels. Most of the time this just redirects it to the end
label for empty blocks, but if the block contains a goto statement, it will redirect it to its destination instead,
thus increasing performance by not having multiple jumps (this won't get picked up by the peephole optimiser if the label addresses are in a jump table).
* Some checks now use what I call the 'true count' rather than the 'label count'. The true count includes each
individual value in a range - for example, 0..2 counts as 3. This increases the chance that a jump table will be
utilised in situations where it is more efficient than a linear list.
* For jump tables, if the case block almost covers the entire range (32 entries or fewer from full coverage),
the initial range check is removed and the gaps included in the jump table (pointing to the else label).
git-svn-id: trunk@40676 -
2018-12-27 18:31:55 +00:00
Mattias Gaertner
75ab803528
pastojs: fixed Result.Free
...
git-svn-id: trunk@40675 -
2018-12-27 09:38:09 +00:00
Mattias Gaertner
2d94d97887
fcl-passrc: resolver: function result is writable
...
git-svn-id: trunk@40674 -
2018-12-27 09:37:51 +00:00
svenbarth
f0753517b4
* fix compilation on platforms that *do* have a Comp type
...
git-svn-id: trunk@40673 -
2018-12-27 09:21:45 +00:00
Mattias Gaertner
324a645bb5
pastojs: fixed compile
...
git-svn-id: trunk@40672 -
2018-12-27 08:18:26 +00:00
Mattias Gaertner
19836867da
fcl-passrc: resolver: test adv records
...
git-svn-id: trunk@40671 -
2018-12-27 08:18:13 +00:00
svenbarth
0f83458513
* previous Invoke() related commit also correctly fixed Mantis #34509
...
git-svn-id: trunk@40670 -
2018-12-26 22:59:48 +00:00
svenbarth
9eac2ea852
* correctly handle record, set and array results if no extended parameter information is available
...
git-svn-id: trunk@40669 -
2018-12-26 22:59:45 +00:00
svenbarth
8c52dc30ce
* move check for result location to separate function
...
git-svn-id: trunk@40668 -
2018-12-26 22:59:42 +00:00
svenbarth
cfd8df4894
+ add tests for raw Invoke() which needs to determine the result location by itself
...
git-svn-id: trunk@40667 -
2018-12-26 22:59:39 +00:00
svenbarth
93e0cd9e1a
* fix for Mantis #34496 : correctly align stack so that SSE operations work correctly
...
git-svn-id: trunk@40666 -
2018-12-26 22:59:36 +00:00
svenbarth
30f14cfcc0
+ add some more tests for floating point values
...
git-svn-id: trunk@40665 -
2018-12-26 22:59:33 +00:00
svenbarth
dbaf7a69bd
* correctly handle a floating point result
...
git-svn-id: trunk@40664 -
2018-12-26 22:59:30 +00:00
svenbarth
551e36cd19
+ add tests for floating point arguments and results
...
git-svn-id: trunk@40663 -
2018-12-26 22:59:27 +00:00
svenbarth
0d09c3c124
+ add utility functions to get TValue values for Single, Double, Extended, Comp and Currency
...
git-svn-id: trunk@40662 -
2018-12-26 22:59:24 +00:00
svenbarth
bd328025fd
* correctly compare tkFloat values
...
git-svn-id: trunk@40661 -
2018-12-26 22:59:21 +00:00
svenbarth
8d235b5f26
* more correct handling of floating point values (especially Comp and Currency) inside TValue
...
git-svn-id: trunk@40660 -
2018-12-26 22:59:18 +00:00
Mattias Gaertner
337fd5abb8
fcl-passrc: parser: fixed parsing record consts
...
git-svn-id: trunk@40659 -
2018-12-26 21:37:06 +00:00
svenbarth
e28dff523a
* with the change regarding property access lists this test is no longer considered correct
...
git-svn-id: trunk@40658 -
2018-12-26 11:26:08 +00:00
svenbarth
60adebfe28
* Mantis #34691 is fixed by previous change regarding property access list
...
git-svn-id: trunk@40657 -
2018-12-26 11:26:04 +00:00
svenbarth
539ed761ba
* a property access list must only consist of record or object fields; classes are not allowed
...
git-svn-id: trunk@40656 -
2018-12-26 11:26:01 +00:00
svenbarth
4afe3c6788
* regenerate msg*.inc files after addition of error message
...
git-svn-id: trunk@40655 -
2018-12-26 11:25:57 +00:00
svenbarth
425e9114f5
+ add error message that a record or object type is required
...
git-svn-id: trunk@40654 -
2018-12-26 11:25:53 +00:00
Károly Balogh
120472dd5b
amunits: fixed SetFileSize() return value to be LongInt
...
git-svn-id: trunk@40653 -
2018-12-26 06:13:41 +00:00
svenbarth
81fa0924d8
* an exception does not need to inherit from Exception, so declare that as such for the thread queue entry for the sake of clarity
...
git-svn-id: trunk@40652 -
2018-12-25 23:30:38 +00:00
svenbarth
3e0da1ef1c
* fix for Mantis #34640 : don't access the thread queue entry directly after it was added to the queue if it's a Queue()d entry instead of a Synchronize()d one
...
git-svn-id: trunk@40651 -
2018-12-25 23:30:35 +00:00
Mattias Gaertner
6ff287637a
fcl-passrc: parser: record property must have type
...
git-svn-id: trunk@40650 -
2018-12-25 22:45:44 +00:00
Jonas Maebe
d75ba7cb11
* suppress notes about unused $nestedvars local variable
...
git-svn-id: trunk@40648 -
2018-12-25 18:22:41 +00:00
Jonas Maebe
acfa2088ef
+ test for previous commit
...
git-svn-id: trunk@40646 -
2018-12-25 17:52:56 +00:00
Jonas Maebe
9c6838ecca
* do not allow implementing interface methods using methods that are not
...
visible in the current class
git-svn-id: trunk@40645 -
2018-12-25 17:51:30 +00:00
michael
66b61bd607
* Implement locate and lookup
...
git-svn-id: trunk@40644 -
2018-12-25 16:29:19 +00:00
Jonas Maebe
b840db7228
* addition to r40631: also force inline self parameters that are already in
...
a temp into a new temp for LLVM, so their type gets updated
git-svn-id: trunk@40642 -
2018-12-25 15:36:28 +00:00
Jonas Maebe
f754978540
* handle constructor function results that have been migrated to the
...
parentfpstruct the same as regular function results (see r32687)
git-svn-id: trunk@40641 -
2018-12-25 15:36:24 +00:00
Mattias Gaertner
18d4e36361
fcl-passrc: added some advanced record tests
...
git-svn-id: trunk@40639 -
2018-12-25 07:19:34 +00:00
Mattias Gaertner
5c5a524cd4
fcl-passrc: parse property dispid only in dispinterface
...
git-svn-id: trunk@40638 -
2018-12-25 07:18:12 +00:00
Jonas Maebe
70cadc7694
* fixed string constant length when going from utf-8 to single-byte code page
...
(mantis #33666 , patch by engkin)
git-svn-id: trunk@40637 -
2018-12-24 22:21:40 +00:00
Jonas Maebe
c9a7afe053
* in constructors, free the temp holding self only after loading the function
...
result, as self is the function result there (follow up to 40501)
git-svn-id: trunk@40635 -
2018-12-24 22:10:09 +00:00
Jonas Maebe
acf02ab64b
* when creating wrappers, add a prefix to parameter names to prevent them
...
hiding the method name of the wrapped routine
o also add a few more '&' prefixes to the generated wrapper code to
prevent issues when keywords are used as identifiers
git-svn-id: trunk@40634 -
2018-12-24 22:10:06 +00:00
Jonas Maebe
377d4e1b58
* make the size parameter of thlcgobj.location_force_mmregscalar() a
...
var-parameter, as the size sometimes gets changed in this routine and
high level code generators don't use the location.size but the def
git-svn-id: trunk@40633 -
2018-12-24 22:10:02 +00:00
Jonas Maebe
f3d831b480
* fixed result cgsize of LLVM's second_nothing type conversion node (new
...
size instead of original size, which can be different in case of going
from void to something else)
git-svn-id: trunk@40632 -
2018-12-24 22:09:58 +00:00
Jonas Maebe
eb769e3859
* force pointer-based self parameters of inlined routines in temps for LLVM
...
to ensure that their type gets updated
git-svn-id: trunk@40631 -
2018-12-24 22:09:55 +00:00
Jonas Maebe
3ccc3e329b
* prevent calling firstpass multiple times for a node (such as when
...
transforming inc/dec to an addn/subn in case of range checking) from
triggering the transformation logic for accessing nested variables
on LLVM/JVM multiple times
* also prevent it from triggering errors during inlining, in case a
parameter to a nested routine gets replaced by a local variable
from a parent routine (in that case, it does not need to be
accessed via the parentfpstruct, as we are being inlined in the
parent) -> don't duplicate the check from pass_typecheck in pass_1,
but check whether it needs to be accessed via the parentfpstruct
by verifying that tloadnode.left is assigned (which pass_typecheck
will ensure if needed)
git-svn-id: trunk@40630 -
2018-12-24 22:09:52 +00:00
Jonas Maebe
dd29088430
* simplify all type conversions for formal constants even for LLVM and JVM
...
(since these happen at compile time and don't result in generated code,
they never need extra type conversions in the code)
git-svn-id: trunk@40629 -
2018-12-24 22:09:48 +00:00
Jonas Maebe
b1b559f283
* fixed used resulttype of char-to-shortstring typeconversion in case the
...
shortstring type is smaler than 255 chars
git-svn-id: trunk@40628 -
2018-12-24 22:09:45 +00:00
Mattias Gaertner
765fdb7641
pastojs: fixed uninitialized result
...
git-svn-id: trunk@40620 -
2018-12-23 16:34:29 +00:00