Мне интересно о свободах, которые компилятор имеет при оптимизации. Ограничьте этот вопрос до GCC и C/С++ (любая версия, любой вкус стандарта):
Можно ли написать код, который ведет себя по-разному в зависимости от того, какой уровень оптимизации он был скомпилирован?
Примером, который я имею в виду, является печать различных битов текста в различных конструкторах на С++ и получение различий в зависимости от того, были ли удалены копии (хотя я не смог заставить такую работу работать).
Подсчет тактовых циклов не разрешен. Если у вас есть пример для компилятора, отличного от GCC, мне тоже будет любопытно, но я не могу его проверить. Бонусные баллы для примера в C.: -)
Изменить: код примера должен быть стандартным и не содержать поведение undefined с самого начала.
Edit 2: Получил отличные ответы! Немного позвольте мне: код должен быть хорошо сформированной программой и соответствовать стандартам, и он должен скомпилировать для исправления детерминированных программ на каждом уровне оптимизации. (Это исключает такие вещи, как расовые условия в плохо сформированном многопоточном коде.) Также я ценю, что округление с плавающей запятой может быть затронуто, но давайте скидку на это.
Я просто набрал 800 репутации, поэтому я думаю, что буду дуть 50 репутации в качестве награды на первом полном примере, чтобы соответствовать (духу) этих условий; 25, если он предполагает злоупотребление строгим псевдонимом. (Если кто-то покажет мне, как отправить награду кому-то другому.)