Commit Graph

454 Commits

Author SHA1 Message Date
florian
e14a3f17e6 * reverted r46220 as it is fixed now properly
git-svn-id: trunk@46276 -
2020-08-05 21:15:33 +00:00
yury
719220e8a4 * For 8/16 bit CPUs and TP mode, disable expansion to a larger integer type for subtract operations on unsigned integers. This is TP7 compatible.
git-svn-id: trunk@46233 -
2020-08-04 20:45:29 +00:00
svenbarth
c17ad509e2 * fix for Mantis #36775: apply patch by J. Gareth Moreton
+ added tests

git-svn-id: trunk@46220 -
2020-08-03 21:53:29 +00:00
Jonas Maebe
346adf7f55 * replace explicit (sometimes incomplete) tests with calls to doshortbooleval()
* the c-style boolean evaluation of "and" is independent of short-circuit evaluation
    (you always have to consider the complete values in case the first one is <> 0)

git-svn-id: trunk@45990 -
2020-08-02 14:39:50 +00:00
florian
5f118da600 * optimize a/a and a-a if fast math is on
git-svn-id: trunk@45630 -
2020-06-09 20:50:47 +00:00
florian
aafc22bd74 + optimize real operations with 0 and 1 if fast math is turned on
git-svn-id: trunk@45627 -
2020-06-08 20:33:27 +00:00
florian
6d3b74f96e * extended r45555 to take care of chars as well
git-svn-id: trunk@45565 -
2020-06-02 20:58:44 +00:00
florian
792cf056eb * a nil node is also a constant pointer node
+ convert (v1=const1) and (v2=const2) into ((v1 xor const1) or (v2 xor const2))=0 if the expressions have no side effects

git-svn-id: trunk@45555 -
2020-06-01 20:50:38 +00:00
florian
7a60e044e3 * simplify constant expressions after re-ordering, resolves #37062
git-svn-id: trunk@45360 -
2020-05-13 20:26:04 +00:00
florian
e5e386f94a * cosmetics
git-svn-id: trunk@45327 -
2020-05-10 18:41:10 +00:00
florian
ebcae70d72 * avoid unncessary conversions of constants in 64 bit ints when doing constant folding
git-svn-id: trunk@45326 -
2020-05-10 15:25:31 +00:00
florian
bdabf674e1 * propagate forinline
git-svn-id: trunk@45319 -
2020-05-09 17:36:36 +00:00
florian
43e6d84f33 * GetCopyAndTypeCheck forces correct type
* propagate forinline flag through simplify

git-svn-id: trunk@45213 -
2020-05-01 20:50:18 +00:00
nickysn
55254ff64b + set expectloc in the first pass of the addnode for small CPUs for procvardef comparisons
git-svn-id: branches/z80@45044 -
2020-04-23 16:05:23 +00:00
nickysn
96a714b20e * set expectloc correctly for procvardef comparisons with nil for small CPUs
git-svn-id: branches/z80@45043 -
2020-04-23 15:52:22 +00:00
nickysn
073afe3735 + set expectloc correctly for small CPUs in the first pass of the add node for classrefdefs
git-svn-id: branches/z80@45042 -
2020-04-23 15:48:59 +00:00
nickysn
2ee28809d8 * set expectloc correctly for small CPUs for implicit pointer object types in the first pass of the add nodes
git-svn-id: branches/z80@45041 -
2020-04-23 15:46:27 +00:00
nickysn
4ae5b81bff * set expectloc correctly for enumdef comparisons on small CPUs
git-svn-id: branches/z80@45040 -
2020-04-23 15:31:50 +00:00
nickysn
c0ea4d826c + also support the 8-bit mul helpers in the generic code of nadd
git-svn-id: branches/z80@44990 -
2020-04-22 02:45:49 +00:00
florian
af8202be3d * compilation for non-Xtensa targets fixed
git-svn-id: trunk@44543 -
2020-04-03 20:15:26 +00:00
florian
66cbee5e31 * factor out first_addfloat_soft
git-svn-id: trunk@44540 -
2020-04-03 20:15:24 +00:00
florian
f8339a43ea * do not do full boolean evaluation on LOC_FLAGS
git-svn-id: trunk@44270 -
2020-03-06 16:16:37 +00:00
florian
93521ae8e8 * fold also pointer additions/subtractions
git-svn-id: trunk@44199 -
2020-02-16 20:14:28 +00:00
florian
27e89e07a3 * in case a 32x32 -> 64 multiplication is converted into shl, the type casts need to be restored
git-svn-id: trunk@44197 -
2020-02-16 20:14:27 +00:00
florian
251b18b966 * do not fold constants if the resulttypes do not match, improved fix for #tw26587
git-svn-id: trunk@44165 -
2020-02-13 20:34:27 +00:00
yury
39c48f0d01 * Fixed r43577 for cases when the size of the new result of a simplified node after typecheckpass is smaller than the size of the original node's result. This caused internal errors or invalid assembly in some cases. Issue #36587.
git-svn-id: trunk@44151 -
2020-02-11 12:49:12 +00:00
florian
77b54f501f * when optimizing boolean expressions, might_have_sideeffects is only relevant if the expression would be optimized away
git-svn-id: trunk@44084 -
2020-02-01 18:02:17 +00:00
florian
051b9840a5 * write a proper error message if <int>/<int> is encountered while no
floating point support is available, resolves #32006

git-svn-id: trunk@43794 -
2019-12-25 18:09:30 +00:00
florian
0cb85eef9b * more currency fixes, should resolve #36176
git-svn-id: trunk@43635 -
2019-12-03 19:31:50 +00:00
pierre
c87facbae1 Use PInt64(@value_currency)^ construct to avoid internal error when starting from 3.0.4 ppcarm compiler
git-svn-id: trunk@43634 -
2019-12-03 16:05:30 +00:00
pierre
91e550edb6 Remove assigned but unused local variable i64 in taddnode.pass_typecheck_internal as suggested by Ondrej Pokorny
This also solves the "Invalid TypeCast Error" in rtl-objpas when compiled with -CriotR option.

git-svn-id: trunk@43631 -
2019-12-02 23:11:21 +00:00
florian
86d8e79e86 * fix some currency issues, resolves #33963 and #36179
git-svn-id: trunk@43620 -
2019-12-01 20:24:00 +00:00
florian
acdff47554 + optimize integer expressions like 2*x*4; which were not found by the node simplifier yet
git-svn-id: trunk@43577 -
2019-11-24 20:21:33 +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
florian
cb67577002 * fix length(<dyn. type>)=0 optimization, resolves #36215
git-svn-id: trunk@43343 -
2019-10-31 21:29:41 +00:00
florian
ee3258c0da * optimizing length(<dyn. type>)=0 is not possible for jvm
git-svn-id: trunk@43280 -
2019-10-20 21:10:56 +00:00
florian
e80eee5da5 * generate better code for length(<dyn. type>)=0, resolves #36060
git-svn-id: trunk@43272 -
2019-10-20 13:03:45 +00:00
pierre
f82cc96cb9 Check that inserttypeconv really change node type to ttypeconvnode before setting convtype field (should fix taddbool.pp bytebool failure on powerpc)
git-svn-id: trunk@42692 -
2019-08-14 23:00:35 +00:00
Jonas Maebe
40082100e1 * fixed range test optimization for signed types and enabled it for them
git-svn-id: trunk@42332 -
2019-07-06 09:57:32 +00:00
Jonas Maebe
faf75095cd * synchronised with trunk till r42189
git-svn-id: branches/debug_eh@42190 -
2019-06-07 18:24:38 +00:00
Jonas Maebe
eab079c7bd * fixed cbool "and" with full boolean evaluation, and cbool "xor"
(mantis #35272)

git-svn-id: trunk@42167 -
2019-06-02 20:04:06 +00:00
Jonas Maebe
1b6425176b * synchronised with trunk till r42049
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +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
florian
38be96e586 * allow pointer+ord. const always if the node is created internally
git-svn-id: branches/debug_eh@41381 -
2019-02-19 22:16:05 +00:00
Jonas Maebe
7af95cbf06 * LLVM does not support 128 bits arithmetic on 32 bit platforms, which we
need for overflow checking -> use RTL built-ins

git-svn-id: trunk@41205 -
2019-02-03 21:01:02 +00:00
Jonas Maebe
04d295f186 * first step towards supporting 32 bit targets with the LLVM code generator:
use the generic code in more cases when cpuhighleveltarget is defined

git-svn-id: trunk@41133 -
2019-01-29 21:39:09 +00:00
Jonas Maebe
d1361ca6ed * fixed adjustments of lower/upper bounds in range test optimization in case
of strictly smaller/greater comparisons (mantis #34385)

git-svn-id: trunk@40344 -
2018-11-17 22:38:31 +00:00
yury
4357caaad8 * Removed unused local vars.
git-svn-id: trunk@40183 -
2018-11-02 18:44:29 +00:00
florian
116f36fe56 * avoid range check errors
git-svn-id: trunk@39990 -
2018-10-20 10:17:34 +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