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.

[参考译文] TM4C1292NCPDT:编译器优化-激进、省略功能代码

Guru**** 2526340 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1137897/tm4c1292ncpdt-compiler-optimization---aggressive-omitting-functional-code

器件型号:TM4C1292NCPDT

顶层处理程序函数支持6种情况。  一种情况是进入包含简单 while (1){}陷阱的特定处理程序例程。  经过优化、这个特定的处理程序被代码省略、而顶层 switch 语句同样省略了 case 条件。

在构建简化的测试方案时、我展示了其他5个处理程序例程、在某些情况下、所有特定的处理程序都在启用优化的情况下从最终构建中省略。  如果不进行优化、则在该测试场景中会执行所有情况、同时 while (1)陷阱按预期运行。

优化级别2 -全局和速度/大小2。  但是、除优化关闭之外的所有第一级设置都会导致问题。 未使用高级优化设置。

对此观察结果的建议回答是什么?  当前编译器的任何可产生预期结果的设置?  更新的编译器版本是否会产生预期结果?

请提供对这种在启用优化的情况下的预期行为的引用。  此行为正在改变自然代码的性质并提供不可预测的功能。

编译器:  

TI v18.12.4.LTS
TI-CGT-ARM_18.12.4.LTS

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

    如果链接器没有看到对函数的调用、则会将其删除。  若要通知链接器保留此类函数、请对其应用 retain 函数属性。  有关详细信息、 请在 TI ARM 编译器手册中搜索 标题为 "函数属性"的子章节。  我不能肯定这种改变会解决您的所有问题、但这是一个好的起点。

    谢谢、此致、

    乔治