This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 死区代码消除取决于 ramfuncs pragma?

Guru**** 2587365 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1023395/dead-code-elimination-depends-on-ramfuncs-pragma

您好!

我是一名 C28x 软件开发人员、我注意到了与相关的内容
消除死区代码。

我注释了一个从代码调用的函数(该函数
定义保持不变)、输出文件的大小减小、而
函数从映射文件中消失。 这是我所期望的。
此函数是 RAM 运行函数、中有一个 pragma
文件开始:

   #pragma CODE_SECTION (StateMachine_XYZ、"ramfuncs");

当我注释掉该 pragma 行时、OUT 文件大小为
再次增大、函数名称再次出现在映射文件中
(函数定义仍在代码中)。 pragma 和
函数定义与位于同一文件中(注释掉)
funcion 调用。

我认为、如果函数未被引用、则应从中删除
可执行代码。 原因取决于删除未引用的
函数在 ramfuncs pragma 上? 这是一个消除死区代码中的毛刺脉冲
还是正常行为?

我使用 CCSv10、TI v20.2.5.LTS。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要自动删除某个函数、它需要位于某个段中。  通常通过使用-gen_func_subsections 选项进行编译来完成 。  在您的特定案例中、您对#pragma CODE_SECTION 执行了类似的操作。  删除#pragma 后、 此函数将与名为.text 的段中的其他函数组合在一起、无法自动删除。

    有关此选项和#pragma 的更多详细信息、 请在 C28x 编译器手册中搜索它们

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经使用 ramfuncs pragma 进行了变通、我也尝试了-gen_func_subsections 编译器标志、情况与您所描述的完全相同。 感谢您的揭秘、George!