Clang a tout à fait raison de produire ce code, comme expliqué ici.
Do est noté static, donc elle ne peut pas être modifiée directement par une autre unité de compilation.
La seule sémantique correcte pour ce programme est qu'une autre unité de compilation va appeler NeverCalled avant main, c'est donc ce que suppose Clang.
Le problème est dans le langage, pas dans l'implémentation.
À la limite, vous pouvez blâmer Clang de supposer que votre programme est correct..
# Comportement attendu
Posté par Maxime Arthaud . En réponse au journal Compilateur trop intelligent. Évalué à 2.
Clang a tout à fait raison de produire ce code, comme expliqué ici.
Do est noté
static, donc elle ne peut pas être modifiée directement par une autre unité de compilation.La seule sémantique correcte pour ce programme est qu'une autre unité de compilation va appeler
NeverCalledavantmain, c'est donc ce que suppose Clang.Le problème est dans le langage, pas dans l'implémentation.
À la limite, vous pouvez blâmer Clang de supposer que votre programme est correct..