mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 07:29:29 +02:00
* fixed temp ansi handling within array constructor
This commit is contained in:
parent
7d72f3610b
commit
03dcba2fda
@ -921,7 +921,10 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
if is_ansistring(lt) then
|
if is_ansistring(lt) then
|
||||||
vtype:=vtAnsiString;
|
begin
|
||||||
|
vtype:=vtAnsiString;
|
||||||
|
freetemp:=false;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if vtype=$ff then
|
if vtype=$ff then
|
||||||
@ -949,7 +952,9 @@ implementation
|
|||||||
emit_lea_loc_ref(hp^.left^.location,href,freetemp);
|
emit_lea_loc_ref(hp^.left^.location,href,freetemp);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
emit_mov_loc_ref(hp^.left^.location,href,S_L);
|
begin
|
||||||
|
emit_mov_loc_ref(hp^.left^.location,href,S_L,freetemp);
|
||||||
|
end;
|
||||||
{ update href to the vtype field and write it }
|
{ update href to the vtype field and write it }
|
||||||
dec(href.offset,4);
|
dec(href.offset,4);
|
||||||
emit_const_ref(A_MOV,S_L,vtype,newreference(href));
|
emit_const_ref(A_MOV,S_L,vtype,newreference(href));
|
||||||
@ -962,11 +967,11 @@ implementation
|
|||||||
begin
|
begin
|
||||||
case elesize of
|
case elesize of
|
||||||
1 :
|
1 :
|
||||||
emit_mov_loc_ref(hp^.left^.location,href,S_B);
|
emit_mov_loc_ref(hp^.left^.location,href,S_B,freetemp);
|
||||||
2 :
|
2 :
|
||||||
emit_mov_loc_ref(hp^.left^.location,href,S_W);
|
emit_mov_loc_ref(hp^.left^.location,href,S_W,freetemp);
|
||||||
4 :
|
4 :
|
||||||
emit_mov_loc_ref(hp^.left^.location,href,S_L);
|
emit_mov_loc_ref(hp^.left^.location,href,S_L,freetemp);
|
||||||
else
|
else
|
||||||
internalerror(87656781);
|
internalerror(87656781);
|
||||||
end;
|
end;
|
||||||
@ -982,7 +987,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.104 2000-03-19 08:14:17 peter
|
Revision 1.105 2000-03-19 11:55:08 peter
|
||||||
|
* fixed temp ansi handling within array constructor
|
||||||
|
|
||||||
|
Revision 1.104 2000/03/19 08:14:17 peter
|
||||||
* small order change for array of const which allows better optimization
|
* small order change for array of const which allows better optimization
|
||||||
|
|
||||||
Revision 1.103 2000/03/01 15:36:11 florian
|
Revision 1.103 2000/03/01 15:36:11 florian
|
||||||
|
@ -638,7 +638,7 @@ implementation
|
|||||||
hightree:=genloadnode(pvarsym(srsym),p^.left^.symtable);
|
hightree:=genloadnode(pvarsym(srsym),p^.left^.symtable);
|
||||||
firstpass(hightree);
|
firstpass(hightree);
|
||||||
secondpass(hightree);
|
secondpass(hightree);
|
||||||
emit_mov_loc_ref(hightree^.location,href,S_L);
|
emit_mov_loc_ref(hightree^.location,href,S_L,true);
|
||||||
disposetree(hightree);
|
disposetree(hightree);
|
||||||
end;
|
end;
|
||||||
emitrangecheck(p^.right,p^.left^.resulttype);
|
emitrangecheck(p^.right,p^.left^.resulttype);
|
||||||
@ -942,7 +942,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.72 2000-02-18 20:53:14 pierre
|
Revision 1.73 2000-03-19 11:55:08 peter
|
||||||
|
* fixed temp ansi handling within array constructor
|
||||||
|
|
||||||
|
Revision 1.72 2000/02/18 20:53:14 pierre
|
||||||
* fixes a stabs problem for functions
|
* fixes a stabs problem for functions
|
||||||
+ includes a stabs local var for with statements
|
+ includes a stabs local var for with statements
|
||||||
the name is with in lowercase followed by an index
|
the name is with in lowercase followed by an index
|
||||||
|
@ -66,7 +66,7 @@ unit cgai386;
|
|||||||
|
|
||||||
procedure emitcall(const routine:string);
|
procedure emitcall(const routine:string);
|
||||||
|
|
||||||
procedure emit_mov_loc_ref(const t:tlocation;const ref:treference;siz:topsize);
|
procedure emit_mov_loc_ref(const t:tlocation;const ref:treference;siz:topsize;freetemp:boolean);
|
||||||
procedure emit_mov_loc_reg(const t:tlocation;reg:tregister);
|
procedure emit_mov_loc_reg(const t:tlocation;reg:tregister);
|
||||||
procedure emit_mov_ref_reg64(r : treference;rl,rh : tregister);
|
procedure emit_mov_ref_reg64(r : treference;rl,rh : tregister);
|
||||||
procedure emit_lea_loc_ref(const t:tlocation;const ref:treference;freetemp:boolean);
|
procedure emit_lea_loc_ref(const t:tlocation;const ref:treference;freetemp:boolean);
|
||||||
@ -416,7 +416,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure emit_mov_loc_ref(const t:tlocation;const ref:treference;siz:topsize);
|
procedure emit_mov_loc_ref(const t:tlocation;const ref:treference;siz:topsize;freetemp:boolean);
|
||||||
var
|
var
|
||||||
hreg : tregister;
|
hreg : tregister;
|
||||||
pushedeax : boolean;
|
pushedeax : boolean;
|
||||||
@ -478,7 +478,8 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
|||||||
(JM)}
|
(JM)}
|
||||||
del_reference(ref);
|
del_reference(ref);
|
||||||
end;
|
end;
|
||||||
ungetiftemp(t.reference);
|
if freetemp then
|
||||||
|
ungetiftemp(t.reference);
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
internalerror(330);
|
internalerror(330);
|
||||||
@ -3833,7 +3834,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.87 2000-03-19 08:17:36 peter
|
Revision 1.88 2000-03-19 11:55:08 peter
|
||||||
|
* fixed temp ansi handling within array constructor
|
||||||
|
|
||||||
|
Revision 1.87 2000/03/19 08:17:36 peter
|
||||||
* tp7 fix
|
* tp7 fix
|
||||||
|
|
||||||
Revision 1.86 2000/03/01 15:36:11 florian
|
Revision 1.86 2000/03/01 15:36:11 florian
|
||||||
|
Loading…
Reference in New Issue
Block a user