C编译器可以自动消除重复的代码吗?

前端之家收集整理的这篇文章主要介绍了C编译器可以自动消除重复的代码吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
代码重复 is usually bad并且通常很容易发现.我想编译器可以在最简单的情况下自动检测它 – 它们已经解析了文本并获得了他们以各种方式分析的中间表示 – 检测可疑模式,如未初始化的变量,优化发出的代码等等.我猜他们经常可以检测到功能重复以这种方式编码并在发出机器代码时对其进行说明.

是否有C编译器可以检测重复代码并且只发出一次相应的机器代码而不是源文本中的每个副本?

解决方法

有些人有,有些则没有.

从LLVM优化页面-mergefunc(MergeFunctions pass,how it works)

这些函数在LLVM中间表示中以小块分隔,此优化过程尝试合并类似的块.但是不能保证成功.

您会在此页面上找到许多其他优化,即使其中一些可能在第一眼看上去很神秘.

我会添加一个注释,重复的代码对于编译器/可执行文件来说并不是那么糟糕,从维护的角度来看它是坏的,并且编译器无法做到这一点.

原文链接:https://www.f2er.com/c/117355.html

猜你在找的C&C++相关文章