|
@@ -477,11 +477,7 @@ begin
|
|
if (size <> OS_NO) then
|
|
if (size <> OS_NO) then
|
|
a_load_ref_reg(list, size, location^.size, tmpref,
|
|
a_load_ref_reg(list, size, location^.size, tmpref,
|
|
location^.register)
|
|
location^.register)
|
|
- else
|
|
|
|
- {$IFDEF extdebug}
|
|
|
|
- list.concat(tai_comment.create(strpnew('a_param_ref with OS_NO, sizeleft ' + inttostr(sizeleft))));
|
|
|
|
- {$ENDIF extdebug}
|
|
|
|
-
|
|
|
|
|
|
+ else begin
|
|
{ load non-integral sized memory location into register. This
|
|
{ load non-integral sized memory location into register. This
|
|
memory location be 1-sizeleft byte sized.
|
|
memory location be 1-sizeleft byte sized.
|
|
Always assume that this memory area is properly aligned, eg. start
|
|
Always assume that this memory area is properly aligned, eg. start
|
|
@@ -529,19 +525,20 @@ begin
|
|
a_reg_dealloc(list, NR_R0);
|
|
a_reg_dealloc(list, NR_R0);
|
|
a_reg_dealloc(list, NR_R12);
|
|
a_reg_dealloc(list, NR_R12);
|
|
end;
|
|
end;
|
|
- else
|
|
|
|
|
|
+ else begin
|
|
{ still > 8 bytes to load, so load data single register now }
|
|
{ still > 8 bytes to load, so load data single register now }
|
|
a_load_ref_reg(list, location^.size, location^.size, tmpref,
|
|
a_load_ref_reg(list, location^.size, location^.size, tmpref,
|
|
location^.register);
|
|
location^.register);
|
|
{ the block is > 8 bytes, so we have to store any bytes not
|
|
{ the block is > 8 bytes, so we have to store any bytes not
|
|
a multiple of the register size beginning with the MSB }
|
|
a multiple of the register size beginning with the MSB }
|
|
adjusttail := true;
|
|
adjusttail := true;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
if (adjusttail) and (sizeleft < tcgsize2size[OS_INT]) then
|
|
if (adjusttail) and (sizeleft < tcgsize2size[OS_INT]) then
|
|
a_op_const_reg(list, OP_SHL, OS_INT,
|
|
a_op_const_reg(list, OP_SHL, OS_INT,
|
|
(tcgsize2size[OS_INT] - sizeleft) * tcgsize2size[OS_INT],
|
|
(tcgsize2size[OS_INT] - sizeleft) * tcgsize2size[OS_INT],
|
|
location^.register);
|
|
location^.register);
|
|
-
|
|
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
LOC_REFERENCE:
|
|
LOC_REFERENCE:
|
|
begin
|
|
begin
|