-OoDEADSTORE takes on too much.
I said that “-OoDEADSTORE
breaks almost every piece of my code”, and you asked for examples.
This code compiled with -O4 -OoDEADSTORE
cuts out the srcp := pInt32(src);
operation, with all the consequences.
var
src: array[0 .. 9] of int32;
srcp: pInt32;
begin
srcp := pInt32(src);
srcp[0] := 1;
end.
(Sometimes a platform-specific push to the falling can be added for more obvious effect, like calling
function ClobberAX: int32; noinline; begin result := 5; end;
first on i386/win32
.)