Подтвердить что ты не робот

Есть ли способ сказать GCC не оптимизировать определенный фрагмент кода?

Я работаю над проектом, который полагается на оптимизацию компилятора, но мне нужен какой-то код, который не должен быть оптимизирован GCC. Возможно ли это?

4b9b3361

Ответ 1

GCC имеет с 4.4. #pragma GCC optimize ("whatever"). Я также рекомендовал бы обернуть конкретный код, который аннотируется с помощью этой прагмы с помощью #pragma GCC push_options и #pragma GCC pop_options. Первый сохранит параметры, как они были до вашего изменения, позже их потом восстановит, а остальная часть кода будет скомпилирована с глобальными параметрами.

Подробнее о любой строке, вы должны посмотреть в gcc doc, здесь самая важная ее часть: Arguments can either be numbers or strings. Numbers are assumed to be an optimization level. Strings that begin with O are assumed to be an optimization option, while other options are assumed to be used with a -f prefix..

Это означает, что если вы не хотите каких-либо оптимизаций в своем конкретном коде, ваше все должно быть "0".

Ответ 3

Вы можете поместить этот фрагмент кода в другой файл и скомпилировать его без оптимизаций.

Или попробуйте использовать директиву #pragma:

#pragma optimize level=0 

Или даже лучше начать и остановить оптимизацию с помощью:

#pragma OPTIMIZE ON 
#pragma OPTIMIZE OFF