{ %OPT=-S2 -O1 } { check if we don't cause sigsegvs when attempting to prefetch if } { typecasts are involved } type tc1 = class a: tc1; x: boolean; end; tc2 = class(tc1) b: array[1..1000000000] of byte; c: tc1; end; var a: tc1; begin a := tc1.create; while assigned(a) do if a.x then a := tc2(a).c else a := a.a; end.