Michaël Van Canneyt
cd6d048588
* Add is_systemunit_unicode function (cchartype suymbol)
2023-07-22 08:26:22 +00:00
Sven/Sarah Barth
ea417fbaaf
+ add utility function to retrieve the char type def from a stringlike def
2023-01-26 07:07:34 +01:00
J. Gareth "Curious Kit" Moreton
a1abe51f2a
* Refactor of is_cyclic to use a linked list on the stack instead of a dynamic array
2022-12-31 09:04:02 +00:00
J. Gareth "Curious Kit" Moreton
f00a932cc6
* New is_cyclic function to detect if def references itself - fixes #40010
2022-12-03 23:53:16 +00:00
Jonas Maebe
a6c7ed5e61
vector support: use vector result types
...
Set the result of a vector add node to a vector type.
Ensure that that these vector types are still asignment-compatible with
regular array types (may want to change this when we expose vector types),
and don't remove type conversions from vector types to array types (so the
code generator pass can still rely on the resultdef being a vector type)
2022-09-16 11:21:04 +02:00
Jonas Maebe
2ce4f0baf5
defutil: new is_address() helper
...
Returns whether a def represents an address
2022-06-12 11:45:31 +02:00
Sven/Sarah Barth
a20bfc0753
+ add utility function to check whether an invokable can be invoked without explicit parameters
2022-05-26 21:42:57 +02:00
Sven/Sarah Barth
22bbcf4b27
+ add utility function to retrieve the invoke procdef of a function reference interface
2022-05-26 21:42:57 +02:00
Sven/Sarah Barth
833a971877
+ add utility function to check whether an objectdef is an invokable one
2022-05-26 21:42:57 +02:00
Sven/Sarah Barth
122c6c92cb
+ add function to check whether a def is an invokable function reference
2022-05-26 21:42:57 +02:00
Sven/Sarah Barth
90844c2027
* fix #35261 : apply slightly adjusted changes by Ryan Joseph to implement support for implicit generic function specializations
...
The main adjustments were as follows:
- fixing coding style and identation
- fixing some typos
- using a better name for the property in tcallcandidates which holds the symbols created for anonymous parameter values
2022-04-20 18:59:31 +02:00
Nikolay Nikolov
b91fc3a0d3
* fixed passing of singleton record parameters, containing a float in WebAssembly
2021-10-14 10:53:55 +03:00
Jonas Maebe
803779002d
* the new constant string arraydefs are also implicit pointers types for JVM
...
git-svn-id: trunk@48833 -
2021-02-27 19:30:37 +00:00
florian
34f7c3e6d4
+ array defs. of open arrays are now marked by ado_OpenArray, so (internally!) zero sized array can be declared with 0..-1
...
git-svn-id: trunk@48758 -
2021-02-21 18:45:58 +00:00
Jonas Maebe
3e047d3691
* generate more efficient code for trunc(currency), trunc(comp), and
...
round(comp) on platforms where currency and comp are handled using the FPU
o also fixes trunc(comp) and trunc(currency) compilation for x86 on LLVM
with -Oofastmath
* add missing removal of excess fpu precision typecasts for trunc/round
git-svn-id: trunk@47854 -
2020-12-27 13:18:47 +00:00
florian
57dc416d96
+ replace appropriate if statements by min/max intrinsics
...
+ support min/max intrinsic on xtensa
git-svn-id: trunk@47693 -
2020-12-05 22:00:59 +00:00
florian
1d474f822e
* fits_in_mm_register takes care of avx(512) support
...
git-svn-id: trunk@47523 -
2020-11-21 22:30:33 +00:00
florian
51da470757
* constrained type parameters are not undefined defs, resolves #37107
...
git-svn-id: trunk@45457 -
2020-05-21 18:19:08 +00:00
svenbarth
89434f0124
* extract calculation of a NOT value to a separate function
...
git-svn-id: trunk@45050 -
2020-04-24 14:08:58 +00:00
florian
3705f95b92
* compilation fixed
...
git-svn-id: trunk@44545 -
2020-04-03 20:15:27 +00:00
florian
af8202be3d
* compilation for non-Xtensa targets fixed
...
git-svn-id: trunk@44543 -
2020-04-03 20:15:26 +00:00
florian
fa4cbc89a5
+ Xtensa: hard float support, i.e. make use of floating point extension if available
...
git-svn-id: trunk@44539 -
2020-04-03 20:15:23 +00:00
florian
70a836c4a2
* first part of merging parts of Jeppe's intrinsics patch, mainly r31135
...
is merged by this commit with a lot of adaptions
git-svn-id: trunk@43949 -
2020-01-14 21:52:39 +00:00
florian
b7c6e01b03
* cleaning up tcgsize: it makes no sense to declare every combination and type
...
the different vector types must be either handled in the high level cg or
by using the shuffle parameter
git-svn-id: trunk@43860 -
2020-01-04 21:54:53 +00:00
Jonas Maebe
d23c7980aa
* properly perform (or not) range/overflow checking when performing constant
...
propagation into inlined routines, regardless of the range/overflow
checking state at the caller site
git-svn-id: trunk@43436 -
2019-11-10 12:00:05 +00:00
Jonas Maebe
c038e4c3f2
* relaxation of r42272: again only show warnings rather than errors for
...
out-of-range constants, because of the comments mentioned in #35753
(except for enums, as apparently Delphi does the same)
* added range check warnings about explicit type casts that throw away
bits (e.g. byte($fff)), without giving warnings for most common cases
(like cardinal(-1))
* fixed masking/sign exting constant array indices (must be based on index
range type size/signedness rather than on array size/"signedness")
git-svn-id: trunk@42275 -
2019-06-23 14:12:33 +00:00
Jonas Maebe
3a2fe24f49
* report range errors for assigning out-of-range constants to enums in
...
Delphi mode (mantis #35671 )
* always give an error (rather than only a warning in case range checking
is disabled) when assigning an out-of-range constant to an ordinal variable
whose type does not span the entire range that its bits can hold (because
the result is undefined and FPC's optimisers rely on variables only
holding values that are valid for the type)
git-svn-id: trunk@42272 -
2019-06-22 17:30:42 +00:00
florian
749c4d4e47
+ keep (certain) arrays in registers if they are used with constants indices only
...
git-svn-id: trunk@42239 -
2019-06-16 21:29:48 +00:00
Jonas Maebe
281b3ad276
* fix case completeness and unreachable code warnings in compiler that would
...
be introduced by the next commit
git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
8b9e90dc7a
* keep track of whether a routine has a C-style variadic parameter in the
...
procoptions even when it's through an array-of-const parameter
* always call create_varargs_paraloc_info() instead of create_paraloc_info()
in the former case, even when no varargs parameters are specified (because
on some platforms even some non-variadic parameters need to be passed
differently, such as on ARM with gnueabihf)
git-svn-id: trunk@41420 -
2019-02-23 15:42:45 +00:00
Jonas Maebe
50ab607676
+ customint torddef type to create arbitraty bit-width integers
...
o use this to handle non-power-of-two-sized parameters for llvm
o no general support in the parser/code generator, so don't expose
git-svn-id: trunk@40398 -
2018-11-29 20:57:08 +00:00
Jonas Maebe
0b246f3dbd
* converted Boolean8 to an internal type, and mapped Boolean to the
...
new internal pasbool1(type) (part of mantis #34411 )
o apply the _Bool x86-64 parameter passing rules only to pasbool1
git-svn-id: trunk@39949 -
2018-10-16 21:14:18 +00:00
florian
8c5606b41d
+ support mmx shifting
...
git-svn-id: trunk@38367 -
2018-02-27 21:40:12 +00:00
florian
31f78ea2b6
+ implementation of the vectorcall calling convention by J. Gareth Moreton
...
+ tests
git-svn-id: trunk@38206 -
2018-02-11 17:50:37 +00:00
michael
f6a08a2c74
* Patch from Ondrej Pokorny to allow correct nodefault/stored for strings
...
git-svn-id: trunk@37954 -
2018-01-13 10:22:16 +00:00
Jonas Maebe
4014f900cb
* fixed get_iso_range_type() for non-integer orddefs (belongs with r37934)
...
git-svn-id: trunk@37938 -
2018-01-09 19:03:36 +00:00
Jonas Maebe
a2217cedd5
* evaluate the lower and upper bounds of for-loops in ISO mode using the
...
ISO-defined range type, instead of using the type of the iteration
variable (mantis #24318 )
git-svn-id: trunk@37934 -
2018-01-07 18:51:53 +00:00
svenbarth
7e692fac2b
+ new utility function get_typekind() to retrieve the TTypeKind value of a def
...
git-svn-id: trunk@36874 -
2017-08-11 22:02:22 +00:00
svenbarth
0c42b6f44a
* fix for Mantis #32118 : also provide a range for undefined defs
...
+ added test
git-svn-id: trunk@36723 -
2017-07-10 19:47:21 +00:00
nickysn
876c0c5fd5
+ added helper function are_equal_ints()
...
git-svn-id: trunk@35761 -
2017-04-10 13:22:50 +00:00
Károly Balogh
5426c11611
marked a few uses of TConstExprInt as const during parameter passing, to avoid a few unnecessary record copying
...
git-svn-id: trunk@35509 -
2017-03-03 17:29:59 +00:00
nickysn
657685a8b6
* use sizesinttype instead of ptrsinttype for the index and high parameter of
...
open arrays/dynarrays/string-like char arrays, etc.
git-svn-id: trunk@34665 -
2016-10-08 13:56:24 +00:00
Jonas Maebe
33b44443b8
+ get_unsigned_inttype(def) to get an unsigned integer type of the same
...
size as the provided def (must be an orddef or enumdef)
git-svn-id: trunk@34033 -
2016-06-30 15:33:43 +00:00
Jonas Maebe
75a6ba4113
- removed symcpu dependencies
...
git-svn-id: trunk@31047 -
2015-06-13 22:47:59 +00:00
Jonas Maebe
146e3bcb9e
* synchronised with trunk till r29513
...
git-svn-id: branches/blocks@29516 -
2015-01-21 23:28:34 +00:00
Jonas Maebe
e97f31541e
- reverted partial commit of merge
...
git-svn-id: branches/blocks@29515 -
2015-01-21 23:24:37 +00:00
Jonas Maebe
a76bbf363d
* synchronised with trunk r29513
...
git-svn-id: branches/blocks@29514 -
2015-01-21 23:18:29 +00:00
nickysn
4ea551a0f7
* is_farpointer and is_hugepointer moved from defutil to symcpu
...
git-svn-id: trunk@28328 -
2014-08-06 20:32:41 +00:00
nickysn
33dac14554
* defutil.get_int_type_for_pointer_arithmetic replaced with a virtual method
...
tpointerdef.pointer_arithmetic_int_type
git-svn-id: trunk@28258 -
2014-07-24 14:18:57 +00:00
Jonas Maebe
c730e16031
* changed the syntax for block procvars from "xxx is block" to
...
"reference to ...; cdecl;". The "reference to ..." syntax is what Delphi
uses for anonymous function references. The "cdecl;" indicates that this
is for the C-variant of such references, which is what blocks are
git-svn-id: branches/blocks@28233 -
2014-07-18 09:15:29 +00:00