* fixed int64 regvar bug in location_force_register

This commit is contained in:
Jonas Maebe 2004-12-11 01:03:01 +00:00
parent 2bd47e8ce6
commit 7c9d8d8872

View File

@ -459,22 +459,26 @@ implementation
else else
begin begin
{ 64bit to 64bit } { 64bit to 64bit }
if (l.loc=LOC_REGISTER) or if ((l.loc=LOC_CREGISTER) and maybeconst) then
((l.loc=LOC_CREGISTER) and maybeconst) then
begin begin
hregister:=l.register64.reglo; hregister:=l.register64.reglo;
hregisterhi:=l.register64.reghi; hregisterhi:=l.register64.reghi;
const_location := true;
end end
else else
begin begin
hregister:=cg.getintregister(list,OS_INT); hregister:=cg.getintregister(list,OS_INT);
hregisterhi:=cg.getintregister(list,OS_INT); hregisterhi:=cg.getintregister(list,OS_INT);
const_location := false;
end; end;
hreg64.reglo:=hregister; hreg64.reglo:=hregister;
hreg64.reghi:=hregisterhi; hreg64.reghi:=hregisterhi;
{ load value in new register } { load value in new register }
cg64.a_load64_loc_reg(list,l,hreg64); cg64.a_load64_loc_reg(list,l,hreg64);
location_reset(l,LOC_REGISTER,dst_size); if not const_location then
location_reset(l,LOC_REGISTER,dst_size)
else
location_reset(l,LOC_CREGISTER,dst_size);
l.register64.reglo:=hregister; l.register64.reglo:=hregister;
l.register64.reghi:=hregisterhi; l.register64.reghi:=hregisterhi;
end; end;
@ -2286,7 +2290,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.247 2004-12-05 12:28:11 peter Revision 1.248 2004-12-11 01:03:01 jonas
* fixed int64 regvar bug in location_force_register
Revision 1.247 2004/12/05 12:28:11 peter
* procvar handling for tp procvar mode fixed * procvar handling for tp procvar mode fixed
* proc to procvar moved from addrnode to typeconvnode * proc to procvar moved from addrnode to typeconvnode
* inlininginfo is now allocated only for inline routines that * inlininginfo is now allocated only for inline routines that