Original bug ID: 7042 Reporter:@xavierleroy Assigned to:@xavierleroy Status: closed (set by @xavierleroy on 2017-02-16T14:16:46Z) Resolution: fixed Priority: normal Severity: major Platform: x86-64 Version: 4.03.0+dev / +beta1 Target version: 4.03.0+dev / +beta1 Fixed in version: 4.03.0+dev / +beta1 Category: back end (clambda to assembly) Related to:#6442
Owing to the use of Pervasives.compare, the new CSE pass of 4.03 considers as equal the instructions "Iconst_float 0.0" and "Iconst_float (-0.0)", replacing the latter by a move of the result of the former. This is not correct, as demonstrated by the attached repro case.
use a specific comparison function, as done for #6442
at some point in the back-end (C--? Mach?), use int64 instead of float to represent FP constants.
Steps to reproduce
Compile mzero.ml using ocamlc and using ocamlopt, then compare the outputs.