mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-06 20:28:14 +02:00

compiler/ncgcal.pas: * tchcallnode.release_para_temps: don't release temps of a constructor's self parameter + added test git-svn-id: trunk@32990 -
50 lines
844 B
ObjectPascal
50 lines
844 B
ObjectPascal
program tw29372;
|
|
|
|
{$MODE DELPHI}
|
|
type
|
|
TR1 = record
|
|
A, B, C: Int64;
|
|
constructor Create(_A, _B, _C: Int64);
|
|
end;
|
|
|
|
TR2 = record
|
|
D, E, F: Int64;
|
|
constructor Create(_D, _E, _F: Int64);
|
|
end;
|
|
|
|
constructor TR1.Create(_A, _B, _C: Int64);
|
|
begin
|
|
A := _A;
|
|
B := _B;
|
|
C := _C;
|
|
end;
|
|
|
|
constructor TR2.Create(_D, _E, _F: Int64);
|
|
begin
|
|
D := _D;
|
|
E := _E;
|
|
F := _F;
|
|
end;
|
|
|
|
{ Note: unlike in the file attached at #29372 we use "const" both times to
|
|
trigger the error on x86_64 as well }
|
|
procedure Foo(const _1: TR1; const _2: TR2);
|
|
begin
|
|
if _1.A <> 1 then
|
|
Halt(1);
|
|
if _1.B <> 2 then
|
|
Halt(2);
|
|
if _1.C <> 3 then
|
|
Halt(3);
|
|
if _2.D <> 4 then
|
|
Halt(2);
|
|
if _2.E <> 5 then
|
|
Halt(5);
|
|
if _2.F <> 6 then
|
|
Halt(6);
|
|
end;
|
|
|
|
begin
|
|
Foo(TR1.Create(1, 2, 3), TR2.Create(4,5,6));
|
|
end.
|