svenbarth
|
0e5a598b6a
* don't use a vecnode to convert a dynamic array or an array constructor to a pointer as that will lead to problems with range checking if the array should be empty; fixes run of tarray12 with -Cr
|
7 gadi atpakaļ |
svenbarth
|
916ff0b92c
+ extend Concat() with support for dynamic arrays
|
7 gadi atpakaļ |
florian
|
194c0c7073
* compilation fixed
|
7 gadi atpakaļ |
florian
|
4752b0ef96
+ tinlinenode calls cpu specific routines for unknown inline numbers
|
7 gadi atpakaļ |
svenbarth
|
f6a867ef04
* move handling of Concat to tinlinenode so that it can be easily extended for dynamic arrays
|
7 gadi atpakaļ |
svenbarth
|
b3ee9339b8
* also report the dynamic array "overloads" for the Insert() intrinsics
|
7 gadi atpakaļ |
svenbarth
|
c5b33f51f9
* fix for Mantis #32412: correctly handle an incorrect parameter count for Delete() and Insert() intrinsics
|
7 gadi atpakaļ |
svenbarth
|
0b02dab684
+ new Delphi-compatible intrinsic GetTypeKind() which returns the TTypeKind of a type as a constant value (and thus can be optimized away in If- and Case-statements)
|
8 gadi atpakaļ |
svenbarth
|
29d9beb40c
* initialize datatemp
|
8 gadi atpakaļ |
svenbarth
|
72c595eefe
+ implement support for Insert() for dynamic arrays; the parameter that is inserted can be a dynamic or static array of the same type, an array constructor or a single element of the arrays type; all that is determined based on the second type
|
8 gadi atpakaļ |
nickysn
|
a7ca75a4b6
* use current node's localswitches field for checking whether range and overflow
|
8 gadi atpakaļ |
nickysn
|
efc5e339d0
* use an enum instead of integer constants to represent inline numbers
|
8 gadi atpakaļ |
florian
|
b1dff29cbf
* removed unused units
|
8 gadi atpakaļ |
nickysn
|
987cf2a9cf
* fixed a bug in the maxqword check in the Rol/RorQWord(maxqword,x)->maxqword
|
8 gadi atpakaļ |
nickysn
|
f65f0b125a
+ optimize sar(0,x) to 0 and sar(-1,x) to -1
|
8 gadi atpakaļ |
nickysn
|
c028362f31
* added the missing pop directive after the push directive in handle_const_rox
|
8 gadi atpakaļ |
nickysn
|
855cd616f0
+ optimize rol(0, x) and ror(0, x) to 0; also optimize the case with all ones,
|
8 gadi atpakaļ |
nickysn
|
29429cca3c
+ mask the shift/rotate count value in the rol/ror/sar inline nodes, before
|
8 gadi atpakaļ |
nickysn
|
b17d97050f
+ also simplify rol(x,0) and ror(x,0) to x
|
8 gadi atpakaļ |
nickysn
|
8ac84ce43a
+ simplify sar(x,0) to x
|
8 gadi atpakaļ |
nickysn
|
d8ec0eff8e
+ implemented inline code generation for 64-bit sar (the SarInt64 intrinsic) on
|
8 gadi atpakaļ |
nickysn
|
5393daa994
+ added compile time const evaluation for Bsf/Bsr(const) as well
|
8 gadi atpakaļ |
nickysn
|
32395bbcbb
+ added compile time const evaluation optimization for PopCnt(const)
|
8 gadi atpakaļ |
nickysn
|
d7c8a081a1
+ enable using the cg64 ops OP_SHR/OP_SHL/OP_SAR on i386 for implementing the
|
8 gadi atpakaļ |
nickysn
|
b14f277e8f
+ use rtl helpers for 64-bit shl/shr/sar/rol/ror modify in place operations, on
|
8 gadi atpakaļ |
nickysn
|
f514657e45
+ implemented the sar/shl/shr/rol/ror inline modify-in-place nodes; the actual
|
8 gadi atpakaļ |
nickysn
|
8d885ffde6
+ write the inlinenumber of inline nodes in the node tree
|
8 gadi atpakaļ |
nickysn
|
256dc546ac
+ implemented the in_neg_assign_x and in_not_assign_x inline nodes, which will
|
8 gadi atpakaļ |
nickysn
|
fc59649a98
+ added inline nodes for handling and/or/xor in place (i.e. x:=x op y, where
|
8 gadi atpakaļ |
florian
|
6d6a45c034
* add/sub nodes with nf_internal set should not do overflow checking, resolves #30889
|
8 gadi atpakaļ |