Typecasted result variable is referenced wrong
Original Reporter info from Mantis: Jasper
-
Reporter name: Jasper Neumann
Original Reporter info from Mantis: Jasper
- Reporter name: Jasper Neumann
Description:
The output of the following program compiled in Delphi-mode (-Mdelphi -O2 -Os) should output 5 equal numbers. The one where tr_32(result).words is used however gives a wrong result. With the released version 2.4.0 it appears to be correct.
program test;
type
tr_32=packed record
case integer of
1: (words: array [0..1] of word);
2: (low,high: word);
end;
procedure f_ref(var l,h:word);
begin
l:=1;
h:=2;
end;
function f_test1:longint;
begin
result:=$12345678;
f_ref(tr_32(result).words[0],tr_32(result).words[1]);
end;
function f_test2:longint;
begin
result:=$12345678;
f_ref(tr_32(result).low,tr_32(result).high);
end;
var
q: longint;
begin
system.writeln($00020001);
system.writeln(f_test1);
system.writeln(f_test2);
q:=$12345678;
f_ref(tr_32(q).words[0],tr_32(q).words[1]);
system.writeln(q);
q:=$12345678;
f_ref(tr_32(q).low,tr_32(q).high);
system.writeln(q);
end.
Mantis conversion info:
- Mantis ID: 17283
- Build: svn 15908
- Version: 2.5.1
- Fixed in version: 2.4.4
- Fixed in revision: 15936 (#8aa9b775)
- Target version: 2.4.2