LINUX.ORG.RU

История изменений

Исправление 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)