Welche Art von totem Code kann GCC aus der endgültigen Ausgabe entfernen?

Mir wurde immer gesagt, dass der Compiler intelligent genug ist, um toten Code zu eliminieren. Ein Großteil des Codes, den ich schreibe, enthält viele Informationen, die zum Zeitpunkt der Kompilierung bekannt sind, aber der Code muss in der allgemeinsten Form geschrieben werden. Ich kenne keine Assembly, daher kann ich die generierte Assembly nicht untersuchen. Welche Art von Code kann in der endgültigen ausführbaren Datei effektiv beseitigt werden?

Einige Beispiele, aber nicht beschränkt auf

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>();
///////////////////////////

Was ist, wenn Definition vonf ist in einem anderen objektiven code und dem aufgerufenenf(true) ist in der Hauptsache. Beseitigt die Optimierung der Verbindungszeit effektiv den toten Code? Was ist der Codierungsstil / die Compileroption / der Compiler-Trick, um die Beseitigung von totem Code zu erleichtern?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage