mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-31 05:42:34 +02:00
* support LOC_MMREGISTER for paralocs when loading 128 bit function results
into integer registers (a record that consists of 4 32 bit floats is returned in 2 xmm registers on x86_64) (mantis #30329) git-svn-id: trunk@34058 -
This commit is contained in:
parent
18639304e1
commit
db77aad2cc
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -15125,6 +15125,7 @@ tests/webtbs/tw30207.pp svneol=native#text/plain
|
||||
tests/webtbs/tw30208.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw3023.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3028.pp svneol=native#text/plain
|
||||
tests/webtbs/tw30329.pp -text svneol=native#text/plain
|
||||
tests/webtbs/tw3038.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3041.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3045.pp svneol=native#text/plain
|
||||
|
@ -856,7 +856,8 @@ implementation
|
||||
is_record(vardef)) then
|
||||
begin
|
||||
case paraloc^.loc of
|
||||
LOC_REGISTER:
|
||||
LOC_REGISTER,
|
||||
LOC_MMREGISTER:
|
||||
begin
|
||||
if not assigned(paraloc^.next) then
|
||||
internalerror(200410104);
|
||||
|
32
tests/webtbs/tw30329.pp
Normal file
32
tests/webtbs/tw30329.pp
Normal file
@ -0,0 +1,32 @@
|
||||
program TestOutbox2d;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
type
|
||||
TGF2DPoint = array[0..1] of Single;
|
||||
|
||||
TGF2DOutbox = packed record
|
||||
FMin, FMax: TGF2DPoint;
|
||||
end;
|
||||
|
||||
function Some2DOutbox : TGF2DOutbox;
|
||||
begin
|
||||
Result.FMin[0]:=1.0;
|
||||
Result.FMin[1]:=2.0;
|
||||
Result.FMax[0]:=3.0;
|
||||
Result.FMax[1]:=4.0;
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
Outbox : TGF2DOutbox;
|
||||
begin
|
||||
Outbox:=Some2DOutbox;
|
||||
with outbox do
|
||||
if (fmin[0]<>1.0) or
|
||||
(fmin[1]<>2.0) or
|
||||
(fmax[0]<>3.0) or
|
||||
(fmax[1]<>4.0) then
|
||||
halt(1);
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user