mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-02 22:27:21 +01:00
* fixed ptr() with constants
This commit is contained in:
parent
73b85611a9
commit
5e21e1981a
@ -50,7 +50,7 @@ implementation
|
||||
|
||||
procedure firstinline(var p : ptree);
|
||||
var
|
||||
vl : longint;
|
||||
vl,vl2 : longint;
|
||||
vr : bestreal;
|
||||
hp,hpp : ptree;
|
||||
store_count_ref,
|
||||
@ -128,19 +128,27 @@ implementation
|
||||
else
|
||||
{ process constant expression with parameter }
|
||||
begin
|
||||
if not(p^.left^.treetype in [realconstn,ordconstn]) then
|
||||
begin
|
||||
CGMessage(cg_e_illegal_expression);
|
||||
vl:=0;
|
||||
vr:=0;
|
||||
isreal:=false;
|
||||
end
|
||||
else
|
||||
begin
|
||||
isreal:=(p^.left^.treetype=realconstn);
|
||||
vl:=p^.left^.value;
|
||||
vr:=p^.left^.value_real;
|
||||
end;
|
||||
vl:=0;
|
||||
vl2:=0; { second parameter Ex: ptr(vl,vl2) }
|
||||
vr:=0;
|
||||
isreal:=false;
|
||||
case p^.left^.treetype of
|
||||
realconstn :
|
||||
begin
|
||||
isreal:=true;
|
||||
vr:=p^.left^.value_real;
|
||||
end;
|
||||
ordconstn :
|
||||
vl:=p^.left^.value;
|
||||
callparan :
|
||||
begin
|
||||
{ both exists, else it was not generated }
|
||||
vl:=p^.left^.left^.value;
|
||||
vl2:=p^.left^.right^.left^.value;
|
||||
end;
|
||||
else
|
||||
CGMessage(cg_e_illegal_expression);
|
||||
end;
|
||||
case p^.inlinenumber of
|
||||
in_const_trunc : begin
|
||||
if isreal then
|
||||
@ -200,7 +208,7 @@ implementation
|
||||
if isreal then
|
||||
CGMessage(type_e_mismatch)
|
||||
else
|
||||
hp:=genordinalconstnode(vl,voidpointerdef);
|
||||
hp:=genordinalconstnode((vl2 shl 16) or vl,voidpointerdef);
|
||||
end;
|
||||
in_const_sqrt : begin
|
||||
if isreal then
|
||||
@ -854,7 +862,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 1998-11-05 12:03:05 peter
|
||||
Revision 1.7 1998-11-13 10:15:52 peter
|
||||
* fixed ptr() with constants
|
||||
|
||||
Revision 1.6 1998/11/05 12:03:05 peter
|
||||
* released useansistring
|
||||
* removed -Sv, its now available in fpc modes
|
||||
|
||||
|
||||
@ -694,7 +694,8 @@ unit tree;
|
||||
{$endif SUPPORT_MMX}
|
||||
p^.resulttype:=def;
|
||||
p^.value:=v;
|
||||
testrange(p^.resulttype,p^.value);
|
||||
if p^.resulttype^.deftype=orddef then
|
||||
testrange(p^.resulttype,p^.value);
|
||||
genordinalconstnode:=p;
|
||||
end;
|
||||
|
||||
@ -1602,7 +1603,10 @@ unit tree;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.50 1998-11-10 10:09:20 peter
|
||||
Revision 1.51 1998-11-13 10:15:53 peter
|
||||
* fixed ptr() with constants
|
||||
|
||||
Revision 1.50 1998/11/10 10:09:20 peter
|
||||
* va_list -> array of const
|
||||
|
||||
Revision 1.49 1998/11/05 12:03:07 peter
|
||||
|
||||
@ -408,6 +408,8 @@ unit types;
|
||||
l:=penumdef(def)^.min;
|
||||
h:=penumdef(def)^.max;
|
||||
end;
|
||||
else
|
||||
internalerror(987);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -993,7 +995,10 @@ unit types;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.36 1998-11-10 10:09:21 peter
|
||||
Revision 1.37 1998-11-13 10:15:50 peter
|
||||
* fixed ptr() with constants
|
||||
|
||||
Revision 1.36 1998/11/10 10:09:21 peter
|
||||
* va_list -> array of const
|
||||
|
||||
Revision 1.35 1998/10/19 08:55:13 pierre
|
||||
|
||||
Loading…
Reference in New Issue
Block a user