-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