Trois bogues du compilateur C++ : une histoire de fonctionnalités obscures

L'ingénieur principal Michael Gibson raconte la découverte d'un bogue du compilateur clang++ résultant de la combinaison de trois fonctionnalités C++ rarement utilisées. Lors de l'implémentation d'une assertion REACHABLE dans son SDK C++, il a utilisé l'initialisation statique, des paramètres de modèle non typés et des espaces de noms anonymes. Cependant, un nouveau pipeline d'optimisation dans clang++ 17+ est entré en conflit avec cette combinaison, entraînant des erreurs de déduplication de symboles. Cela souligne le risque de bogues obscurs provenant d'interactions de fonctionnalités inhabituelles dans les systèmes complexes et montre la puissance des tests automatisés pour découvrir de tels problèmes.
Lire plus