|
@@ -403,7 +403,11 @@ implementation
|
|
|
newparaloc:=cgpara.add_location;
|
|
|
newparaloc^.size:=paraloc^.size;
|
|
|
newparaloc^.def:=paraloc^.def;
|
|
|
- newparaloc^.shiftval:=paraloc^.shiftval;
|
|
|
+ { shiftval overlaps with part of the reference, so it may be
|
|
|
+ different from 0 and if wr then force the newparaloc to a register
|
|
|
+ in the optimization below, shiftval will remain <> 0 }
|
|
|
+ if not(paraloc^.loc in [LOC_REFERENCE,LOC_CREFERENCE]) then
|
|
|
+ newparaloc^.shiftval:=paraloc^.shiftval;
|
|
|
{ $warning maybe release this optimization for all targets? }
|
|
|
{ released for all CPUs:
|
|
|
i386 isn't affected anyways because it uses the stack to push parameters
|