Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > GNU toolchain > gcc builtin functions


Автор: ni1 16.7.2014, 18:08
Код

        for ( i = 0; i < len4; i++)
            p1[i] = p4[i];


Как запретить gcc оптимизировать этот код в memcpy(p1, p4, len4), оставив strlen memset и другие ?


Автор: leniviy 16.7.2014, 18:26
Вынесите его в отдельный модуль и скомпилируйте без оптимизации. Кстати, что результат другой?

Автор: ni1 16.7.2014, 21:03
результат правильный. Может есть способ сделать memcpy инлайн? В ms compiler для этого #pragma intrinsic() и #pragma function()

Автор: leniviy 16.7.2014, 22:24
ключ -fno-builtin-memcpy должен помочь.

Хотя не, не помогает. -fno-builtin убирает вызов memcpy, но генерит большой код. -fno-tree-loop-distribute-patterns и -ffreestanding дают похожий эффект

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)