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.

[参考译文] 编译器/C2000-CGT:使用 disable_inlining 选项

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/814686/compiler-c2000-cgt-using-disable_inlining-option

器件型号:C2000-CGT

工具/软件:TI C/C++编译器

您好!

我对 diable_inlining 函数的用法有疑问。

我知道、为了内联函数、必须使用某种级别的优化来编译代码。 我假设函数未内联-Ooff、即使我向函数添加了内联关键字。 如果我错了、请纠正我的问题。  

假设我有一个内联函数、代码是使用-O2编译的。 如果我尝试使用-O2和-disable_inlining 选项进行编译、则使用相同的代码。 除了添加的分支和 return 语句之外、生成的汇编代码是否会有任何差异?

例如,func()是一个内联函数,它通过 -O2转换为汇编指令 X、Y、Z。 如果使用-O2和-disable_inlining 进行编译、是否会生成相同的 X、Y、Z (没有添加安全指令)?

此致、

Veena

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

    [引用 user="Veena Kamath"]如果使用-O2和--disable_inlining 进行编译,是否会生成相同的 X、Y、Z (不添加任何组件说明)?

    否  在一般概念层面上、您展示了函数内联的正确图示。  但它可以忽略一些细节。

    当指令 X、Y、Z 内联到调用函数中时、通常会进行进一步优化。  指令可以在不使用时进行优化、并以不同的顺序与函数中的其他指令进行混合、等等。

    当 func 未内联时、通常情况下 X、Y、Z 被设置和拆分函数的指令包围。

    谢谢、此致、

    乔治