GodzilLe 04/01/2019 à 21:20
En l’occurence ce qui découle de l’erreur de base (supposer que cette fonction ne peux pas retourner -0) est la seule et véritable erreur.
Le JIT prétendant que function(X) ne peux pas retourner -0 il optimise en enlevant des choses qui sont en théorie inutile car ne “peuvent pas arriver” sauf que ça arrive.
L’erreur n’est pas dans l’optimisation à supprimer certaines vérifications, si les sites conditions ne peuvent vraiment pas arriver c’est du code inutile et “mort”.
La l’unique erreur c’est cette assumption. Donc ce n’est pas une erreur de qualité du code mais une erreur de compréhension des maths de la personne qui a introduit cette optimisation.
Le code fait exactement ce qu’on lui a demandé: “ça ne peux pas retourner -0”