Que tipo de código morto o GCC pode eliminar da saída final?

Sempre me disseram que o compilador é inteligente o suficiente para eliminar o código morto. Grande parte do código que estou escrevendo tem muitas informações conhecidas em tempo de compilação, mas o código precisa ser escrito da forma mais genérica. Não conheço nenhum assembly, portanto não posso examinar o assembly gerado. Que tipo de código pode ser efetivamente eliminado no executável final?

Alguns exemplos, mas não limitados a

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

E se a definição def está em outro código objetivo e o chamadof(true) está no principal. Vinculará a otimização de tempo efetivamente eliminar o código morto? Qual é o estilo de codificação / opção de compilador / truque para facilitar a eliminação de código morto?

questionAnswers(3)

yourAnswerToTheQuestion