|
@@ -608,9 +608,22 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
- procedure emit_lea_loc_ref(const t:tlocation;const ref:treference);
|
|
|
+ procedure emit_lea_tree_ref(const p:ptree;const ref:treference);
|
|
|
+ var
|
|
|
+ href : treference;
|
|
|
+ t : tlocation;
|
|
|
begin
|
|
|
+ t:=p^.location;
|
|
|
case t.loc of
|
|
|
+ LOC_FPU : begin
|
|
|
+ reset_reference(href);
|
|
|
+ gettempofsizereference(10,href);
|
|
|
+ floatstore(pfloatdef(p^.resulttype)^.typ,href);
|
|
|
+ exprasmlist^.concat(new(pai386,op_ref_reg(A_LEA,S_L,
|
|
|
+ newreference(href),R_EDI)));
|
|
|
+ exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,
|
|
|
+ R_EDI,newreference(ref))));
|
|
|
+ end;
|
|
|
LOC_MEM,
|
|
|
LOC_REFERENCE : begin
|
|
|
if t.reference.isintvalue then
|
|
@@ -697,7 +710,7 @@ implementation
|
|
|
inc(href.offset,4);
|
|
|
{ write changing field update href to the next element }
|
|
|
if vaddr then
|
|
|
- emit_lea_loc_ref(hp^.left^.location,href)
|
|
|
+ emit_lea_tree_ref(hp^.left,href)
|
|
|
else
|
|
|
emit_mov_loc_ref(hp^.left^.location,href);
|
|
|
inc(href.offset,4);
|
|
@@ -710,7 +723,10 @@ implementation
|
|
|
end.
|
|
|
{
|
|
|
$Log$
|
|
|
- Revision 1.20 1998-09-24 14:26:03 peter
|
|
|
+ Revision 1.21 1998-09-28 11:07:39 peter
|
|
|
+ + floatdef support for array of const
|
|
|
+
|
|
|
+ Revision 1.20 1998/09/24 14:26:03 peter
|
|
|
* updated for new tvarrec
|
|
|
|
|
|
Revision 1.19 1998/09/23 17:49:59 peter
|