如何在同一个源模块中生成不同级别的优化?

时间:2011-11-22 20:18:00

标签: debugging optimization gcc compiler-optimization

我正在使用GCC构建我的嵌入式C应用程序,我使用GDB进行调试。该应用程序包含一个在主处理器上运行的程序和在多个加速器DSP内核上运行的多个程序。

我的主机(控制)程序有一个非常简单的主要功能,一个短循环调用一个更大的功能来做一些事情并激活加速器。我的问题是,在使用优化进行编译时,调试在主函数中的断点位置方面更难。在构建w / o优化时,另一个函数以次优方式编译。

一种可能的解决方案是将主机项目分成两个源文件并使用不同级别的优化。但是,我想将它保存在同一个文件中。

有没有办法(编译指示?)指示编译器在同一个源单元中进行不同级别的优化?

1 个答案:

答案 0 :(得分:3)

使用最近的GCC(例如GCC 4.6 ),您可以使用function specific option pragmas更改优化,例如

 #pragma GCC optimize ("-02")

您也可以使用function attributes

IIRC,这出现在GCC 4.5中,并且在4.6中效果更好,因此您需要最新版本的GCC。