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
nickysn
d86a8ebc99
* defutil.get_int_result_type_from_pointer_subtraction moved to a virtual
...
method tpointerdef.pointer_subtraction_result_type
git-svn-id: trunk@28219 -
2014-07-14 23:30:29 +00:00
nickysn
99c555cea8
+ implemented huge pointer subtraction
...
* the result of far pointer subtraction changed to word (for TP7 compatibility)
git-svn-id: trunk@28218 -
2014-07-13 23:40:43 +00:00
nickysn
89db1e4118
+ add proper int type conversions for huge pointer arithmetic in pass_typecheck
...
of the add node
git-svn-id: trunk@28094 -
2014-06-27 23:37:08 +00:00
Jonas Maebe
24f4adf657
* set the rangedef of open arrays to ptrsinttype (instead of s32inttype),
...
so that it's the same as the def returned by the low/high nodes
(mantis #25703 )
git-svn-id: trunk@27970 -
2014-06-15 15:26:47 +00:00
Jonas Maebe
338c064beb
* moved x86-specific tpointerdef functionality to architecture-specific
...
descendants
git-svn-id: trunk@27397 -
2014-03-30 21:04:36 +00:00
sergei
1744988962
* Modified behavior of CExtended type in overload selection: it is made more compatible to Extended than to Double and Single. Also an Extended parameter selects a CExtended overload (if available) instead of Double.
...
+ Test.
git-svn-id: trunk@27366 -
2014-03-30 07:31:58 +00:00
nickysn
f6b18e9b8d
* i8086 far data memory model fixes in defutil.def_cgsize
...
git-svn-id: trunk@27247 -
2014-03-23 22:14:09 +00:00
nickysn
894d400a7b
+ added is_farpointer(tdef) and is_hugepointer(tdef) helper functions to defutil
...
git-svn-id: trunk@24865 -
2013-06-10 20:50:05 +00:00
nickysn
bfd65ea550
* use tprocvardef(def).size (which takes into account far code/data) to determine cgsize for procvars in def_cgsize
...
git-svn-id: trunk@24844 -
2013-06-09 17:51:56 +00:00
sergei
4e873d0561
+ Determine early (before pass 2) whether managed parameters/locals/temps will cause the procedure to reference RTTI labels and, therefore, need GOT.
...
+ trttinode also sets pi_needs_got flag.
git-svn-id: trunk@24767 -
2013-06-02 13:09:47 +00:00
Jonas Maebe
7d9f98e516
+ def_cgmmsize() that returns a vector tcgsize for arraydefs (as generated
...
for certain parameter locations in the x86-64 parameter manager)
* full support for vector types in the high level code generator by
translating arraydefs passed to a_*mm*() methods into vector tcgsizes
git-svn-id: trunk@24762 -
2013-06-02 10:24:08 +00:00
Jonas Maebe
53ba7fbb8b
* support formaldef in def_cgsize (-> OS_ADDR)
...
git-svn-id: trunk@24760 -
2013-06-02 10:23:54 +00:00
Jonas Maebe
2dd75e707e
* renamed thlcgobj.tcgsize2orddef to defutil.cgsize_orddef
...
git-svn-id: trunk@24743 -
2013-06-01 18:28:15 +00:00
nickysn
42b2228dc7
+ far pointer support in defutil.def_cgsize
...
git-svn-id: trunk@24552 -
2013-05-22 12:30:34 +00:00
nickysn
2486009d37
+ support u64bit as well in defutil.range_to_basetype
...
git-svn-id: branches/i8086@24173 -
2013-04-07 10:57:27 +00:00
nickysn
d88855566a
+ added defutil.is_nativesint and is_nativeuint
...
git-svn-id: branches/i8086@24167 -
2013-04-06 23:03:12 +00:00
nickysn
70d02e6942
+ added defutil.is_nativeint and is_nativeord
...
git-svn-id: branches/i8086@24166 -
2013-04-06 22:58:04 +00:00