8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

GCC 可以从最终输出中消除哪种死代码?

Thebest 2月前

58 0

我一直被告知,编译器足够智能,可以消除死代码。我编写的许多代码在编译时都包含大量已知信息,但代码必须以... 的形式编写。

我一直被告知编译器足够智能,可以消除死代码。我编写的大部分代码在编译时都有很多已知信息,但代码必须以最通用的形式编写。我不懂任何汇编语言,所以我无法检查生成的汇编语言。什么样的代码可以在最终的可执行文件中有效地消除?

举几个例子,但不限于

f(bool b){
 if(b){
  //some code
 }else{
  //some code
 }
}
f(true);
//////////////////////////
template<bool b>
f(){
 if(b){
  //some code
 }else{
  //some code
 }
}
f<true>();
///////////////////////////

如果 的定义 f 在其他目标代码中,而 被调用的 f(true) 在主代码中,会怎么样?链接时间优化能否有效消除死代码?有什么编码风格/编译器选项/技巧可以促进死代码的消除?

帖子版权声明 1、本帖标题:GCC 可以从最终输出中消除哪种死代码?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Thebest在本站《visual-studio》版块原创发布, 转载请注明出处!
最新回复 (0)
  • @*:RTL = 寄存器传输语言是一种受 Lisp 启发的低级中间语言(GCC 使用的三种中间语言之一),与另一种称为 GIMPLE 的语言一起用于优化目的。

返回
作者最近主题: