私はいつも、コンパイラはデッド コードを排除するのに十分賢いと言われてきた。私が書いているコードの多くは、コンパイル時にわかっている多くの情報を持っていますが、コードは最も一般的な形式で書かなければなりません。アセンブリがわからないため、生成されたアセンブリを調べることができません。最終的な実行可能ファイルで効果的に削除できるコードはどのようなものですか?
いくつかの例ですが、これらに限定されません
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)
たがメインにある場合はどうなりますか。リンク時間の最適化は、デッド コードを効果的に排除しますか? デッドコードの除去を容易にするコーディングスタイル/コンパイラオプション/トリックは何ですか?