+ Int64/QWord stuff for array of const added

This commit is contained in:
florian 2000-05-14 18:48:24 +00:00
parent a319c0e73c
commit 795a06b4f2
3 changed files with 48 additions and 6 deletions

View File

@ -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

View File

@ -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

View File

@ -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