mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-23 08:49:38 +02:00
+ Int64/QWord stuff for array of const added
This commit is contained in:
parent
a319c0e73c
commit
795a06b4f2
@ -831,6 +831,7 @@ implementation
|
||||
vtInterface = 14;
|
||||
vtWideString = 15;
|
||||
vtInt64 = 16;
|
||||
vtQWord = 17;
|
||||
|
||||
procedure secondarrayconstruct(var p : ptree);
|
||||
var
|
||||
@ -882,8 +883,19 @@ implementation
|
||||
enumdef,
|
||||
orddef :
|
||||
begin
|
||||
if (lt^.deftype=enumdef) or
|
||||
is_integer(lt) then
|
||||
if is_64bitint(lt) then
|
||||
begin
|
||||
case porddef(lt)^.typ of
|
||||
s64bit:
|
||||
vtype:=vtInt64;
|
||||
u64bit:
|
||||
vtype:=vtQWord;
|
||||
end;
|
||||
freetemp:=false;
|
||||
vaddr:=true;
|
||||
end
|
||||
else if (lt^.deftype=enumdef) or
|
||||
is_integer(lt) then
|
||||
vtype:=vtInteger
|
||||
else
|
||||
if is_boolean(lt) then
|
||||
@ -988,7 +1000,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.106 2000-04-03 12:23:02 pierre
|
||||
Revision 1.107 2000-05-14 18:50:35 florian
|
||||
+ Int64/QWord stuff for array of const added
|
||||
|
||||
Revision 1.106 2000/04/03 12:23:02 pierre
|
||||
* fix for bug 909
|
||||
|
||||
Revision 1.105 2000/03/19 11:55:08 peter
|
||||
|
@ -791,6 +791,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
|
||||
|
||||
procedure emit_to_mem(var p:ptree);
|
||||
|
||||
var
|
||||
r : treference;
|
||||
|
||||
begin
|
||||
case p^.location.loc of
|
||||
LOC_FPU : begin
|
||||
@ -800,6 +804,22 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
{ This can't be never a l-value! (FK)
|
||||
p^.location.loc:=LOC_REFERENCE; }
|
||||
end;
|
||||
LOC_REGISTER:
|
||||
begin
|
||||
if is_64bitint(p^.resulttype) then
|
||||
begin
|
||||
gettempofsizereference(8,r);
|
||||
emit_reg_ref(A_MOV,S_L,p^.location.registerlow,
|
||||
newreference(r));
|
||||
inc(r.offset,4);
|
||||
emit_reg_ref(A_MOV,S_L,p^.location.registerhigh,
|
||||
newreference(r));
|
||||
dec(r.offset,4);
|
||||
p^.location.reference:=r;
|
||||
end
|
||||
else
|
||||
internalerror(1405001);
|
||||
end;
|
||||
LOC_MEM,
|
||||
LOC_REFERENCE : ;
|
||||
LOC_CFPUREGISTER : begin
|
||||
@ -3946,7 +3966,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.101 2000-05-09 14:17:33 pierre
|
||||
Revision 1.102 2000-05-14 18:49:04 florian
|
||||
+ Int64/QWord stuff for array of const added
|
||||
|
||||
Revision 1.101 2000/05/09 14:17:33 pierre
|
||||
* handle interrupt function correctly
|
||||
|
||||
Revision 1.100 2000/05/04 09:29:31 pierre
|
||||
|
@ -393,7 +393,8 @@ implementation
|
||||
end;
|
||||
orddef :
|
||||
begin
|
||||
if is_integer(hp^.left^.resulttype) then
|
||||
if is_integer(hp^.left^.resulttype) and
|
||||
not(is_64bitint(hp^.left^.resulttype)) then
|
||||
begin
|
||||
hp^.left:=gentypeconvnode(hp^.left,s32bitdef);
|
||||
firstpass(hp^.left);
|
||||
@ -496,7 +497,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.64 2000-04-25 14:43:36 jonas
|
||||
Revision 1.65 2000-05-14 18:48:24 florian
|
||||
+ Int64/QWord stuff for array of const added
|
||||
|
||||
Revision 1.64 2000/04/25 14:43:36 jonas
|
||||
- disabled "string_var := string_var + ... " and "string_var + char_var"
|
||||
optimizations (were only active with -dnewoptimizations) because of
|
||||
several internal issues
|
||||
|
Loading…
Reference in New Issue
Block a user