* the transformation (a or/and b) or/and c into a or/and (b or/and c) can be applied for booleans as well

git-svn-id: trunk@22041 -
This commit is contained in:
florian 2012-08-08 21:21:45 +00:00
parent b330bba0bc
commit 03071709a9

View File

@ -251,8 +251,9 @@ unit optcse;
}
if (n.nodetype in [andn,orn,addn,muln]) and
(n.nodetype=tbinarynode(n).left.nodetype) and
{ do is optimizations only for integers, reals (no currency!), vectors and sets }
(is_integer(n.resultdef) or is_real(n.resultdef) or is_vector(n.resultdef) or is_set(n.resultdef)) and
{ do is optimizations only for integers, reals (no currency!), vectors, sets or booleans }
(is_integer(n.resultdef) or is_real(n.resultdef) or is_vector(n.resultdef) or is_set(n.resultdef) or
is_boolean(n.resultdef)) and
{ either if fastmath is on }
((cs_opt_fastmath in current_settings.optimizerswitches) or
{ or for the logical operators, they cannot overflow }