mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-24 05:19:37 +02:00
* avoid some unnecessary bool->int->bool type conversions
git-svn-id: trunk@3184 -
This commit is contained in:
parent
bd27a09918
commit
039e7143f4
compiler
@ -818,13 +818,13 @@ implementation
|
||||
if torddef(left.resulttype.def).size>torddef(right.resulttype.def).size then
|
||||
begin
|
||||
right:=ctypeconvnode.create_internal(right,left.resulttype);
|
||||
ttypeconvnode(right).convtype:=tc_bool_2_int;
|
||||
ttypeconvnode(right).convtype:=tc_bool_2_bool;
|
||||
resulttypepass(right);
|
||||
end
|
||||
else if torddef(left.resulttype.def).size<torddef(right.resulttype.def).size then
|
||||
begin
|
||||
left:=ctypeconvnode.create_internal(left,right.resulttype);
|
||||
ttypeconvnode(left).convtype:=tc_bool_2_int;
|
||||
ttypeconvnode(left).convtype:=tc_bool_2_bool;
|
||||
resulttypepass(left);
|
||||
end;
|
||||
case nodetype of
|
||||
|
@ -392,10 +392,18 @@ interface
|
||||
the bits that define the true status can be outside the limits
|
||||
of the new size and truncating the register can result in a 0
|
||||
value }
|
||||
if resulttype.def.size<left.resulttype.def.size then
|
||||
second_int_to_bool
|
||||
else
|
||||
second_bool_to_int;
|
||||
if (left.expectloc in [LOC_FLAGS,LOC_JUMP]) then
|
||||
begin
|
||||
secondpass(left);
|
||||
if (left.location.loc <> left.expectloc) then
|
||||
internalerror(20060409);
|
||||
location_copy(location,left.location);
|
||||
end
|
||||
else
|
||||
if resulttype.def.size<left.resulttype.def.size then
|
||||
second_int_to_bool
|
||||
else
|
||||
second_bool_to_int;
|
||||
end;
|
||||
|
||||
|
||||
|
@ -2023,9 +2023,14 @@ implementation
|
||||
function ttypeconvnode.first_bool_to_bool : tnode;
|
||||
begin
|
||||
first_bool_to_bool:=nil;
|
||||
expectloc:=LOC_REGISTER;
|
||||
if registersint<1 then
|
||||
registersint:=1;
|
||||
if (left.expectloc in [LOC_FLAGS,LOC_JUMP]) then
|
||||
expectloc := left.expectloc
|
||||
else
|
||||
begin
|
||||
expectloc:=LOC_REGISTER;
|
||||
if registersint<1 then
|
||||
registersint:=1;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user