Je suis curieux de connaître les libertés qu'un compilateur a lors de l'optimisation. Limitons à cette question pour GCC et C/C++ (n'importe quelle version, toute la saveur de la norme):
Est-il possible d'écrire du code qui se comporte différemment en fonction du niveau d'optimisation il a été compilé avec?
L'exemple que j'ai en tête est l'impression de différents morceaux de texte dans plusieurs constructeurs en C++ et en faisant une différence selon que les copies sont élidés (même si je n'ai pas pu faire une telle chose travail).
Comptage de cycles d'horloge n'est pas autorisée. Si vous avez un exemple pour un non-compilateur GCC, je serais curieux aussi, mais je ne peux pas le vérifier. Les points de Bonus pour un exemple dans C. :-)
Edit: Le code de l'exemple doit être conforme à la norme et ne pas contenir un comportement indéterminé dès le départ.
Edit 2: Obtenu quelques grandes réponses déjà! Permettez-moi de faire monter les enjeux un peu: Le code doit être bien formé programme et être conformes aux normes en vigueur, et il doit compiler pour corriger, déterministe des programmes dans chaque niveau d'optimisation. (Qui exclut des choses comme la course-conditions de mal-formé code multithread.) Aussi j'apprécie flottantes point d'arrondi peuvent être touchés, mais nous allons rabais qui.
Je viens de toucher 800 réputation, donc je pense que je vais sauter 50 réputation de bounty sur le premier exemple complet pour se conformer à (l'esprit) de ces conditions; 25 si elle implique abuser stricte de l'aliasing. (Sous réserve que quelqu'un me montre comment envoyer des bounty à quelqu'un d'autre.)