代码重复
is usually bad并且通常很容易发现.我想编译器可以在最简单的情况下自动检测它 – 它们已经解析了文本并获得了他们以各种方式分析的中间表示 – 检测可疑模式,如未初始化的变量,优化发出的代码等等.我猜他们经常可以检测到功能重复以这种方式编码并在发出机器代码时对其进行说明.
解决方法
有些人有,有些则没有.
从LLVM优化页面:-mergefunc(MergeFunctions pass,how it works)
这些函数在LLVM中间表示中以小块分隔,此优化过程尝试合并类似的块.但是不能保证成功.
您会在此页面上找到许多其他优化,即使其中一些可能在第一眼看上去很神秘.
我会添加一个注释,重复的代码对于编译器/可执行文件来说并不是那么糟糕,从维护的角度来看它是坏的,并且编译器无法做到这一点.