Tout à fait. D'ailleurs le compilateur est parfois le responsable mais pas le coupable dans cette histoire. J'ai vu des cas où des entreprises interdisent de compiler certains logiciels avec optimisations de peur que cela ne révèle un bug. La magie du C/C++ fait qu'une variable non initialisée voire un tableau un peu trop court ne sont pas toujours un soucis (jusqu'au jour où...). Mais si le compilateur se permet de réorganiser un peu trop (en particulier GRAPHITE peut-être vraiment très agressif), ça peut mettre très vite ce fragile équilibre par terre.
Pour les codes de calcul si on pousse les optimisations un peu fort, on autorise le compilateur à considérer que l'addition ou la multiplication sont commutatives, ce qui peut faire au final de gros écarts de précision voire des overflows (certains codes assez malins sont organisés par exemple pour intercaler des additions de nombres positifs et négatifs pour éviter les dépassements, et il suffit d'un bête échange d'opération qui semble anodin pour faire un overflow)... Là encore il faut être prudent et ce n'est pas toujours la faute au compilateur.
[^] # Re: Jamais content
Posté par Cédric Bastoul . En réponse à la dépêche Sortie de la version 4.4 du compilateur GCC. Évalué à 6.
Pour les codes de calcul si on pousse les optimisations un peu fort, on autorise le compilateur à considérer que l'addition ou la multiplication sont commutatives, ce qui peut faire au final de gros écarts de précision voire des overflows (certains codes assez malins sont organisés par exemple pour intercaler des additions de nombres positifs et négatifs pour éviter les dépassements, et il suffit d'un bête échange d'opération qui semble anodin pour faire un overflow)... Là encore il faut être prudent et ce n'est pas toujours la faute au compilateur.