mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 03:59:28 +02:00
* merged fix for inc/dec on 64bit types from tcinl
This commit is contained in:
parent
e171f341a0
commit
628e37cd95
@ -671,6 +671,37 @@ implementation
|
||||
{ first param must be var }
|
||||
valid_for_assign(tcallparanode(left).left,false);
|
||||
{ check type }
|
||||
if is_64bitint(left.resulttype) then
|
||||
{ convert to simple add for 64bit (JM) }
|
||||
begin
|
||||
{ extra parameter? }
|
||||
if assigned(tcallparanode(left).right) then
|
||||
begin
|
||||
{ Yes, use for add node }
|
||||
hpp := tcallparanode(tcallparanode(left).right).left;
|
||||
tcallparanode(tcallparanode(left).right).left := nil;
|
||||
if assigned(tcallparanode(tcallparanode(left).right).right) then
|
||||
CGMessage(cg_e_illegal_expression);
|
||||
end
|
||||
else
|
||||
{ no, create constant 1 }
|
||||
hpp := cordconstnode.create(1,s32bitdef);
|
||||
{ addition/substraction depending on inc/dec }
|
||||
if inlinenumber = in_inc_x then
|
||||
hp := caddnode.create(addn,tcallparanode(left).left,hpp)
|
||||
else
|
||||
hp := caddnode.create(subn,tcallparanode(left).left.getcopy,hpp);
|
||||
{ assign result of addition }
|
||||
hpp := cassignmentnode.create(tcallparanode(left).left,hp);
|
||||
tcallparanode(left).left := nil;
|
||||
{ firstpass it }
|
||||
firstpass(hpp);
|
||||
{ return new node }
|
||||
pass_1 := hpp;
|
||||
dec(parsing_para_level);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if (left.resulttype^.deftype in [enumdef,pointerdef]) or
|
||||
is_ordinal(left.resulttype) then
|
||||
begin
|
||||
@ -1381,7 +1412,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2000-10-14 10:14:50 peter
|
||||
Revision 1.8 2000-10-14 18:27:53 jonas
|
||||
* merged fix for inc/dec on 64bit types from tcinl
|
||||
|
||||
Revision 1.7 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.6 2000/10/01 19:48:24 peter
|
||||
|
Loading…
Reference in New Issue
Block a user