* use index register when available for generating a reference with

only a signle register. Using the base register could possibly
    destroy the framepointer
This commit is contained in:
peter 2002-09-01 19:27:34 +00:00
parent a73ecec989
commit f77536fece
2 changed files with 16 additions and 6 deletions

View File

@ -120,9 +120,9 @@ implementation
end
else
begin
cg.a_loadaddr_ref_reg(exprasmlist,location.reference,location.reference.base);
rg.ungetregisterint(exprasmlist,location.reference.index);
reference_reset_base(location.reference,location.reference.base,0);
cg.a_loadaddr_ref_reg(exprasmlist,location.reference,location.reference.index);
rg.ungetregisterint(exprasmlist,location.reference.base);
reference_reset_base(location.reference,location.reference.index,0);
end;
{ insert the new index register and scalefactor or
do the multiplication manual }
@ -156,7 +156,12 @@ begin
end.
{
$Log$
Revision 1.42 2002-09-01 18:46:01 peter
Revision 1.43 2002-09-01 19:27:35 peter
* use index register when available for generating a reference with
only a signle register. Using the base register could possibly
destroy the framepointer
Revision 1.42 2002/09/01 18:46:01 peter
* fixed generic tcgvecnode
* move code that updates a reference with index register and multiplier
to separate method so it can be overriden for scaled indexing

View File

@ -595,7 +595,7 @@ implementation
(l.reference.index<>R_NO)) then
begin
{ load address into a single base register }
if l.reference.base=R_NO then
if l.reference.index<>R_NO then
begin
cg.a_loadaddr_ref_reg(list,l.reference,l.reference.index);
rg.ungetregister(list,l.reference.base);
@ -1786,7 +1786,12 @@ implementation
end.
{
$Log$
Revision 1.45 2002-09-01 18:50:20 peter
Revision 1.46 2002-09-01 19:27:34 peter
* use index register when available for generating a reference with
only a signle register. Using the base register could possibly
destroy the framepointer
Revision 1.45 2002/09/01 18:50:20 peter
* fixed maybe_save that did not support a reference with only
a index register. It now also updates the location with the new
base register only