sergei
|
04d8e8a5dc
* On 64-bit targets, handle abs(int64) internally, using the same code as for abs(longint), i.e. without branching. Both generic and x86-specific pass 2 code is already suitable for different operand sizes, only type checking needs removal of excessive conversions to 32 bits.
|
před 11 roky |
svenbarth
|
34394d6925
Fix for Mantis #26180. Accept undefineddef as first parameter type of an Assert if it is used inside a generic.
|
před 11 roky |
sergei
|
274c2fc82f
* handle_ln_const: if/else branches were swapped, correct values are: ln(0)=-Inf and ln(-#)=NaN.
|
před 11 roky |
sergei
|
743326dc70
* abs(): when translated to generic fpc_abs_real() helper, typecast result back to original precision, similar to how it is done for sqr and sqrt. Fixes compilation on m68k after r27808 (m86k looks like the only target still needing this generic handling).
|
před 11 roky |
sergei
|
37625211f5
* Fixed sqrt procedure selection on arm-wince after r27809.
|
před 11 roky |
sergei
|
22e099d000
* sqrt(real): for targets with emulated floating point, invoke float64_sqrt or float32_sqrt from softfpu code. Testing on ARM CPU shows that float64_sqrt executes about twice faster and offers better accuracy than fpc_sqrt_real from genmath.inc.
|
před 11 roky |
sergei
|
fc5f45f65c
* sqr(real) and sqrt(real): remove typeconv node inserted by initial call processing (see explanation in comments), allowing these functions to be evaluated using precision of argument. In particular, sqrt(single) and sqrt(double) now emit 'sqrtss' and 'sqrtsd' instructions on x86 targets with -Cfsse3. Non-x86 targets already have the necessary support in code generators.
|
před 11 roky |
florian
|
d88d644925
+ support for FMA intrinsic: if there is no hardware support, the compiler throws an error.
|
před 11 roky |
svenbarth
|
256c852631
Fix for Mantis #23776.
|
před 11 roky |
Jonas Maebe
|
d452686c39
* moved pbestrealtype from symdef to symcpu
|
před 11 roky |
Jonas Maebe
|
b57c95043f
+ support overriding tdef/tsym methods with target-specific functionality:
|
před 11 roky |
Jonas Maebe
|
0edb7b2288
* fixed r27320 for darwin, as its mangled names get prefixed with '_'
|
před 11 roky |
svenbarth
|
a08e8ff982
Fix for Mantis #25929
|
před 11 roky |
florian
|
ab3f5744e0
* skip dec/inc type checking in unspecialized generic methods, resolves #25603
|
před 11 roky |
florian
|
e841027a48
* fixes handling of typed files in iso mode
|
před 11 roky |
nickysn
|
e1332304ef
* when converting Hi() to a shr node, convert the right shr const parameter to
|
před 11 roky |
Jonas Maebe
|
d2b8275b99
+ support for arbitrary encodings in readstr/writestr
|
před 11 roky |
sergei
|
8ecad469a6
* Reverted r26256 since it produced wrong results if argument of inc/dec is actually unaligned. Added description of the issue and slightly increased node complexity at which address is cached, so operations on record/class fields do not take address.
|
před 11 roky |
sergei
|
b376f56bf3
* Use typed pointer to store address of x when processing inc(x)/dec(x) with range checking enabled. This preserves alignment of x and prevents generating unaligned code on alignment-sensitive targets.
|
před 11 roky |
florian
|
4d5119bf1c
* fixes several issues which cause warnings by the dfa code when using it to detect uninitialized variables
|
před 11 roky |
florian
|
412dc6586f
* the writestr helper initializes the target string, so mark it as being written
|
před 12 roky |
sergei
|
9ad98a2c4d
* Handle "SarInt64" always as internal procedure, introduced virtual method tinlinenode.first_sar that by default converts it into call to "fpc_sarint64" unless target CPU is 64-bit. This provides a point to insert target-specific optimizations.
|
před 12 roky |
sergei
|
dac8cbcefc
* Handle assigned(x) expressions entirely in first pass by converting them to "x<>nil", indicate that procedure variables should not be called by setting nf_load_procvar flag (which is already used with typeconvnode for exactly the same purpose). This allows to generate better code when assigned(x) is used on right side of assigments. Mantis #24572.
|
před 12 roky |
florian
|
a2a405581c
* don't call the ansistring val variant for a zero based array if not necessary to avoid ansistring usage in embedded applications
|
před 12 roky |
masta
|
b81f746e05
Inline Length(DynamicArray)
|
před 12 roky |
Jonas Maebe
|
fb8fb29574
* record/use the code page of string constants typecasted to an ansistring
|
před 12 roky |
sergei
|
87cfd86172
* Define SUPPORT_GET_FRAME for targets having "get_frame" as internal symbol (x86,arm and jvm, currently), removes need to enumerate these targets in every related conditional compilation directive and simplifies configuring this feature for other targets.
|
před 12 roky |
sergei
|
cc8772cf92
* sizeof(x), typeof(x): if "x" is typenode, request GOT for PIC because a global VMT label will be loaded.
|
před 12 roky |
florian
|
0968d095ed
* convert function like used new into a appropriate nodes only in pass_1 so proper error checking can be carried out, resolves #24495
|
před 12 roky |
nickysn
|
a86cb5c600
+ far pointer fixes in the internal compiler handling of ptr(const,const)
|
před 12 roky |