История изменений
Исправление www_linux_org_ru, (текущая версия) :
просто потому что компилятору доступен полный контекст исполнения и зависимости между данными (системные вызовы и прерывания пока упустим)
мне бы тоже этого хотелось, но это иногда не так из-за aliasing-а
Если это не так, или компилятор не может доказать зависимость, он, очевидно, предполагает независимость и генерирует соответствующий код. Программист может улучшить кодогенерацию с помощью соответствующих pragma statements.
pragma — это ответ на вопрос «что делать, если программист умный, а компилятор тупой»
а я имею в виду вопрос «что делать, если программист умный, компилятор умный, а архитектура — тупая» (например, не предоставляет что-то вроде branch on cache miss или conditional move on cache miss — хотя в цитате речь идет об aliasing-е, который *тоже* может быть неизвестен на этапе компиляции даже *умному* программисту, т.к. зависит от входных данных)
Исходная версия www_linux_org_ru, :
просто потому что компилятору доступен полный контекст исполнения и зависимости между данными (системные вызовы и прерывания пока упустим)
мне бы тоже этого хотелось, но это иногда не так из-за aliasing-а
Если это не так, или компилятор не может доказать зависимость, он, очевидно, предполагает независимость и генерирует соответствующий код. Программист может улучшить кодогенерацию с помощью соответствующих pragma statements.
pragma — это ответ на вопрос «что делать, если программист умный, а компилятор тупой»
а я имею в виду вопрос «что делать, если программист умный, компилятор умный, а архитектура — тупая» (т.е. не предоставляет что-то вроде branch on cache miss или conditional move on cache miss)