mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-16 08:29:47 +02:00
PascalScript: pass dyn. arrays in registers when i386 register calling conventions are used (related to FPC r30870 #7b0df7dac3). Issue #29230. From Maciej Izak.
git-svn-id: trunk@51018 -
This commit is contained in:
parent
1dc657f13d
commit
93d8895785
@ -542,11 +542,7 @@ _XMM0: Double;
|
||||
Result := True;
|
||||
exit;
|
||||
end else begin
|
||||
{$IFDEF FPC}
|
||||
StoreReg(IPointer(FVar.Dta));
|
||||
{$ELSE}
|
||||
StoreReg(IPointer(FVar.Dta^));
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
btRecord:
|
||||
|
@ -1,7 +1,5 @@
|
||||
{ implementation of x86 abi }
|
||||
{$ifdef FPC}
|
||||
{$define PS_ARRAY_ON_STACK}
|
||||
{$endif}
|
||||
|
||||
function RealFloatCall_Register(p: Pointer;
|
||||
_EAX, _EDX, _ECX: Cardinal;
|
||||
StackData: Pointer;
|
||||
@ -390,9 +388,16 @@ var
|
||||
{$IFDEF PS_DYNARRAY}
|
||||
TempStr := StringOfChar(AnsiChar(#0),4);
|
||||
Pointer((@TempStr[1])^) := Pointer(fvar.Dta^);
|
||||
{$IFDEF PS_ARRAY_ON_STACK}
|
||||
UseReg := false;
|
||||
{$IFDEF FPC}
|
||||
{$IF FPC_FULLVERSION < 30101}
|
||||
// pass dyn. array on stack
|
||||
UseReg := false;
|
||||
{$ELSE}
|
||||
// pass dyn. arrays in registers when i386 register calling conventions are used
|
||||
// more details -> FPC r30870
|
||||
UseReg := CallingConv = cdRegister;
|
||||
{$ENDIF}
|
||||
{$ENDIF ~FPC}
|
||||
{$ELSE}
|
||||
Exit;
|
||||
{$ENDIF}
|
||||
|
Loading…
Reference in New Issue
Block a user