mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 23:59:10 +02:00
* 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:
parent
a73ecec989
commit
f77536fece
@ -120,9 +120,9 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
cg.a_loadaddr_ref_reg(exprasmlist,location.reference,location.reference.base);
|
cg.a_loadaddr_ref_reg(exprasmlist,location.reference,location.reference.index);
|
||||||
rg.ungetregisterint(exprasmlist,location.reference.index);
|
rg.ungetregisterint(exprasmlist,location.reference.base);
|
||||||
reference_reset_base(location.reference,location.reference.base,0);
|
reference_reset_base(location.reference,location.reference.index,0);
|
||||||
end;
|
end;
|
||||||
{ insert the new index register and scalefactor or
|
{ insert the new index register and scalefactor or
|
||||||
do the multiplication manual }
|
do the multiplication manual }
|
||||||
@ -156,7 +156,12 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fixed generic tcgvecnode
|
||||||
* move code that updates a reference with index register and multiplier
|
* move code that updates a reference with index register and multiplier
|
||||||
to separate method so it can be overriden for scaled indexing
|
to separate method so it can be overriden for scaled indexing
|
||||||
|
@ -595,7 +595,7 @@ implementation
|
|||||||
(l.reference.index<>R_NO)) then
|
(l.reference.index<>R_NO)) then
|
||||||
begin
|
begin
|
||||||
{ load address into a single base register }
|
{ load address into a single base register }
|
||||||
if l.reference.base=R_NO then
|
if l.reference.index<>R_NO then
|
||||||
begin
|
begin
|
||||||
cg.a_loadaddr_ref_reg(list,l.reference,l.reference.index);
|
cg.a_loadaddr_ref_reg(list,l.reference,l.reference.index);
|
||||||
rg.ungetregister(list,l.reference.base);
|
rg.ungetregister(list,l.reference.base);
|
||||||
@ -1786,7 +1786,12 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fixed maybe_save that did not support a reference with only
|
||||||
a index register. It now also updates the location with the new
|
a index register. It now also updates the location with the new
|
||||||
base register only
|
base register only
|
||||||
|
Loading…
Reference in New Issue
Block a user