-OoFASTMATH folds floating-point + CONST1 - CONST2 in the wrong way.
This code compiled with `-O4`: ```pascal function Shift(x: single): single; noinline; begin result := x + 10.0 - 1.0; end; begin if Shift(5.0) <> 14.0 then begin writeln('Got ', Shift(5.0):0:1, ', expected 14.0.'); halt(1); end; end. ``` outputs ``` Got 16.0, expected 14.0 ``` as if `Shift` did `x + 10.0 + 1.0`. Occurs on `i386/win32` and `x86-64/win64`, does not depend on the float type, and is prevented by `-OoNOFASTMATH`. Same thing with `x - 1.0 + 10.0`.
issue