* Fix for go32v2 specific failure in test/cg/tcalval5 with -Aas option

git-svn-id: trunk@21443 -
This commit is contained in:
pierre 2012-05-31 12:55:56 +00:00
parent 069cd9f250
commit b9f8934d7e

View File

@ -148,6 +148,7 @@ unit cgcpu;
procedure pushdata(paraloc:pcgparalocation;ofs:tcgint);
var
pushsize : tcgsize;
opsize : topsize;
tmpreg : tregister;
href : treference;
begin
@ -170,16 +171,21 @@ unit cgcpu;
pushsize:=paraloc^.size
else
pushsize:=int_cgsize(cgpara.alignment);
opsize:=TCgsize2opsize[pushsize];
{ for go32v2 we obtain OS_F32,
but pushs is not valid, we need pushl }
if opsize=S_FS then
opsize:=S_L;
if tcgsize2size[paraloc^.size]<cgpara.alignment then
begin
tmpreg:=getintregister(list,pushsize);
a_load_ref_reg(list,paraloc^.size,pushsize,href,tmpreg);
list.concat(taicpu.op_reg(A_PUSH,TCgsize2opsize[pushsize],tmpreg));
list.concat(taicpu.op_reg(A_PUSH,opsize,tmpreg));
end
else
begin
make_simple_ref(list,href);
list.concat(taicpu.op_ref(A_PUSH,TCgsize2opsize[pushsize],href));
list.concat(taicpu.op_ref(A_PUSH,opsize,href));
end;
end;