mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 08:38:52 +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/tw30208.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw3023.pp svneol=native#text/plain
|
tests/webtbs/tw3023.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3028.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/tw3038.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3041.pp svneol=native#text/plain
|
tests/webtbs/tw3041.pp svneol=native#text/plain
|
||||||
tests/webtbs/tw3045.pp svneol=native#text/plain
|
tests/webtbs/tw3045.pp svneol=native#text/plain
|
||||||
|
@ -856,7 +856,8 @@ implementation
|
|||||||
is_record(vardef)) then
|
is_record(vardef)) then
|
||||||
begin
|
begin
|
||||||
case paraloc^.loc of
|
case paraloc^.loc of
|
||||||
LOC_REGISTER:
|
LOC_REGISTER,
|
||||||
|
LOC_MMREGISTER:
|
||||||
begin
|
begin
|
||||||
if not assigned(paraloc^.next) then
|
if not assigned(paraloc^.next) then
|
||||||
internalerror(200410104);
|
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