Ce sont des optimisations destructrices. Sinon à quoi servirait les optimisations non destructrices, suffiraient de les appliquer en permanence, non ?
On peut imaginer que c'est pour le temps de compilation qui deviendrait significativement plus long en effectuant toutes les passes d'optimisation... Enfin, le principe même d'une optimisation c'est transformer un code qui fait quelque chose en un code qui fait la même chose en étant plus rapide. C'est précisément pour cela que des comportements sont laissés indéfinis en C: afin de laisser plus de marge aux compilateurs pour l'optimisation (puisqu'on transforme un truc qui n'a au départ pas de sens toute ré-écriture est valide...). Donc le coup des optimisations "destructrices" je suis surpris ... cela peut-il vraiment changer la sémantique d'un code qui n'utilise pas d'UB ?
[^] # Re: Comportement attendu
Posté par Aluminium95 . En réponse au journal Compilateur trop intelligent. Évalué à 3.
On peut imaginer que c'est pour le temps de compilation qui deviendrait significativement plus long en effectuant toutes les passes d'optimisation... Enfin, le principe même d'une optimisation c'est transformer un code qui fait quelque chose en un code qui fait la même chose en étant plus rapide. C'est précisément pour cela que des comportements sont laissés indéfinis en C: afin de laisser plus de marge aux compilateurs pour l'optimisation (puisqu'on transforme un truc qui n'a au départ pas de sens toute ré-écriture est valide...). Donc le coup des optimisations "destructrices" je suis surpris ... cela peut-il vraiment changer la sémantique d'un code qui n'utilise pas d'UB ?