+ replace i:=succ/pred(i) by inc/dec(i)

git-svn-id: trunk@34791 -
This commit is contained in:
florian 2016-11-05 23:05:48 +00:00
parent 8bbd2e4030
commit 509f6839fe

View File

@ -563,6 +563,25 @@ implementation
is_constrealnode(right) and
not equal_defs(right.resultdef,left.resultdef) then
inserttypeconv(right,left.resultdef);
{ replace i:=succ/pred(i) by inc/dec(i)? }
if (right.nodetype=inlinen) and
((tinlinenode(right).inlinenumber=in_succ_x) or (tinlinenode(right).inlinenumber=in_pred_x)) and
(tinlinenode(right).left.isequal(left)) and
((localswitches*[cs_check_overflow,cs_check_range])=[]) and
((right.localswitches*[cs_check_overflow,cs_check_range])=[])
then
begin
if tinlinenode(right).inlinenumber=in_succ_x then
result:=cinlinenode.create(
in_inc_x,false,ccallparanode.create(
left.getcopy,nil))
else
result:=cinlinenode.create(
in_dec_x,false,ccallparanode.create(
left.getcopy,nil));
exit;
end;
end;