|
@@ -62,6 +62,7 @@ interface
|
|
function first_round_real: tnode; virtual;
|
|
function first_round_real: tnode; virtual;
|
|
function first_trunc_real: tnode; virtual;
|
|
function first_trunc_real: tnode; virtual;
|
|
function first_int_real: tnode; virtual;
|
|
function first_int_real: tnode; virtual;
|
|
|
|
+ function first_abs_long: tnode; virtual;
|
|
private
|
|
private
|
|
function handle_str: tnode;
|
|
function handle_str: tnode;
|
|
function handle_reset_rewrite_typed: tnode;
|
|
function handle_reset_rewrite_typed: tnode;
|
|
@@ -1618,7 +1619,6 @@ implementation
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-
|
|
|
|
in_sizeof_x:
|
|
in_sizeof_x:
|
|
begin
|
|
begin
|
|
set_varstate(left,vs_read,[]);
|
|
set_varstate(left,vs_read,[]);
|
|
@@ -2281,12 +2281,30 @@ implementation
|
|
in_abs_real :
|
|
in_abs_real :
|
|
begin
|
|
begin
|
|
if left.nodetype in [ordconstn,realconstn] then
|
|
if left.nodetype in [ordconstn,realconstn] then
|
|
- setconstrealvalue(abs(getconstrealvalue))
|
|
|
|
|
|
+ setconstrealvalue(abs(getconstrealvalue))
|
|
else
|
|
else
|
|
|
|
+ begin
|
|
|
|
+ set_varstate(left,vs_read,[vsf_must_be_valid]);
|
|
|
|
+ inserttypeconv(left,pbestrealtype^);
|
|
|
|
+ resultdef:=pbestrealtype^;
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ in_abs_long:
|
|
|
|
+ begin
|
|
|
|
+ if left.nodetype=ordconstn then
|
|
|
|
+ begin
|
|
|
|
+ if tordconstnode(left).value<0 then
|
|
|
|
+ result:=cordconstnode.create((-tordconstnode(left).value),s32inttype,false)
|
|
|
|
+ else
|
|
|
|
+ result:=cordconstnode.create((tordconstnode(left).value),s32inttype,false);
|
|
|
|
+ left:=nil
|
|
|
|
+ end
|
|
|
|
+ else
|
|
begin
|
|
begin
|
|
set_varstate(left,vs_read,[vsf_must_be_valid]);
|
|
set_varstate(left,vs_read,[vsf_must_be_valid]);
|
|
- inserttypeconv(left,pbestrealtype^);
|
|
|
|
- resultdef:=pbestrealtype^;
|
|
|
|
|
|
+ inserttypeconv(left,s32inttype);
|
|
|
|
+ resultdef:=s32inttype;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -2650,6 +2668,11 @@ implementation
|
|
result := first_abs_real;
|
|
result := first_abs_real;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ in_abs_long:
|
|
|
|
+ begin
|
|
|
|
+ result := first_abs_long;
|
|
|
|
+ end;
|
|
|
|
+
|
|
in_sqr_real:
|
|
in_sqr_real:
|
|
begin
|
|
begin
|
|
result := first_sqr_real;
|
|
result := first_sqr_real;
|
|
@@ -2856,6 +2879,11 @@ implementation
|
|
left := nil;
|
|
left := nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ function tinlinenode.first_abs_long : tnode;
|
|
|
|
+ begin
|
|
|
|
+ result:=nil;
|
|
|
|
+ end;
|
|
|
|
+
|
|
function tinlinenode.first_pack_unpack: tnode;
|
|
function tinlinenode.first_pack_unpack: tnode;
|
|
var
|
|
var
|
|
loopstatement : tstatementnode;
|
|
loopstatement : tstatementnode;
|