Как создать разные уровни оптимизации в одном исходном модуле? - PullRequest
0 голосов
/ 23 ноября 2011

Я использую GCC для создания своего встроенного C-приложения, которое я отлаживаю с помощью GDB. Приложение состоит из программы, работающей на главном процессоре, и нескольких программ, работающих на нескольких ядрах DSP ускорителя.

Моя основная (управляющая) программа имеет очень простую основную функцию с коротким циклом, вызывающим большую функцию, которая выполняет некоторые действия и активирует ускорители. Моя проблема в том, что при компиляции с оптимизацией отладка сложнее с точки зрения расположения точек останова в основной функции. При построении без оптимизации другая функция компилируется неоптимально.

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

Есть ли способ (прагма?) Указать компилятору, чтобы он выполнял разные уровни оптимизации в одном и том же исходном модуле?

1 Ответ

3 голосов
/ 23 ноября 2011

С недавним GCC (например, GCC 4.6 ) вы можете изменить оптимизацию с помощью прагм для конкретной функции , например,

 #pragma GCC optimize ("-02")

. атрибуты функции для того же.

IIRC, это появилось в GCC 4.5, и работает намного лучше в 4.6, поэтому вам нужна последняя версия GCC.

...