|
@@ -0,0 +1,49 @@
|
|
|
+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.
|