mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-02 12:50:27 +02:00
* fixed not(not()) removal
This commit is contained in:
parent
4aa03c0656
commit
160103faba
@ -45,7 +45,7 @@ interface
|
||||
function pass_1 : tnode;override;
|
||||
function det_resulttype:tnode;override;
|
||||
{ override the following if you want to implement }
|
||||
{ parts explicitely in the code generator (CEC)
|
||||
{ parts explicitely in the code generator (CEC)
|
||||
Should return nil, if everything will be handled
|
||||
in the code generator
|
||||
}
|
||||
@ -340,7 +340,7 @@ implementation
|
||||
right := nil;
|
||||
firstpass(result);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function tshlshrnode.det_resulttype:tnode;
|
||||
var
|
||||
@ -404,7 +404,7 @@ implementation
|
||||
regs:=1
|
||||
end
|
||||
else
|
||||
begin
|
||||
begin
|
||||
result := first_shlshr64bitint;
|
||||
if assigned(result) then
|
||||
exit;
|
||||
@ -578,25 +578,24 @@ implementation
|
||||
|
||||
resulttype:=left.resulttype;
|
||||
|
||||
{Try optmimizing ourself away.}
|
||||
if left.nodetype=notn then
|
||||
begin
|
||||
{Double not. Remove both.}
|
||||
t:=Tnotnode(left).left;
|
||||
Tnotnode(left).left:=nil;
|
||||
left:=t;
|
||||
result:=t;
|
||||
exit;
|
||||
end;
|
||||
if left.nodetype in [ltn,lten,equaln,unequaln,gtn,gten] then
|
||||
begin
|
||||
{Not of boolean expression. Turn around the operator and remove
|
||||
the not.}
|
||||
result:=left;
|
||||
left.nodetype:=boolean_reverse[left.nodetype];
|
||||
left:=nil;
|
||||
exit;
|
||||
end;
|
||||
{ Try optmimizing ourself away }
|
||||
if left.nodetype=notn then
|
||||
begin
|
||||
{ Double not. Remove both }
|
||||
result:=Tnotnode(left).left;
|
||||
Tnotnode(left).left:=nil;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if left.nodetype in [ltn,lten,equaln,unequaln,gtn,gten] then
|
||||
begin
|
||||
{ Not of boolean expression. Turn around the operator and remove
|
||||
the not }
|
||||
result:=left;
|
||||
left.nodetype:=boolean_reverse[left.nodetype];
|
||||
left:=nil;
|
||||
exit;
|
||||
end;
|
||||
|
||||
{ constant folding }
|
||||
if (left.nodetype=ordconstn) then
|
||||
@ -755,7 +754,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.38 2002-08-15 15:09:42 carl
|
||||
Revision 1.39 2002-08-25 09:10:58 peter
|
||||
* fixed not(not()) removal
|
||||
|
||||
Revision 1.38 2002/08/15 15:09:42 carl
|
||||
+ fpu emulation helpers (ppu checking also)
|
||||
|
||||
Revision 1.37 2002/08/14 19:26:55 carl
|
||||
|
Loading…
Reference in New Issue
Block a user