mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-15 21:29:15 +02:00
* use g_ptrtypecast_ref() in a_load_ref_reg() when we have to typecast
references git-svn-id: trunk@34028 -
This commit is contained in:
parent
c421171461
commit
f2c1e4234f
@ -708,9 +708,7 @@ implementation
|
|||||||
{ typecast the pointer to the struct into a pointer to an
|
{ typecast the pointer to the struct into a pointer to an
|
||||||
integer of equal size }
|
integer of equal size }
|
||||||
tmpsize:=def2intdef(fromsize,tosize);
|
tmpsize:=def2intdef(fromsize,tosize);
|
||||||
hreg:=getaddressregister(list,cpointerdef.getreusable(tmpsize));
|
g_ptrtypecast_ref(list,cpointerdef.getreusable(fromsize),cpointerdef.getreusable(tmpsize),sref);
|
||||||
a_loadaddr_ref_reg(list,fromsize,cpointerdef.getreusable(tmpsize),sref,hreg);
|
|
||||||
reference_reset_base(sref,cpointerdef.getreusable(tmpsize),hreg,0,sref.alignment);
|
|
||||||
{ load that integer }
|
{ load that integer }
|
||||||
a_load_ref_reg(list,tmpsize,tosize,sref,register);
|
a_load_ref_reg(list,tmpsize,tosize,sref,register);
|
||||||
end
|
end
|
||||||
@ -735,12 +733,10 @@ implementation
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
(* typecast the pointer to the value instead of the value
|
(* typecast the pointer to the value instead of the value
|
||||||
itself if they have the same size but are of different
|
itself if tosize<=fromsize but they are of different
|
||||||
kinds, because we can't e.g. typecast a loaded <{i32, i32}>
|
kinds, because we can't e.g. bitcast a loaded <{i32, i32}>
|
||||||
to an i64 *)
|
to an i64 *)
|
||||||
hreg:=getaddressregister(list,cpointerdef.getreusable(tosize));
|
g_ptrtypecast_ref(list,cpointerdef.getreusable(fromsize),cpointerdef.getreusable(tosize),sref);
|
||||||
a_loadaddr_ref_reg(list,fromsize,cpointerdef.getreusable(tosize),sref,hreg);
|
|
||||||
reference_reset_base(sref,cpointerdef.getreusable(tosize),hreg,0,sref.alignment);
|
|
||||||
fromsize:=tosize;
|
fromsize:=tosize;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user