Key points are not available for this paper at this time.
Les compilateurs sont des logiciels complexes, critiques et largement utilisés. Les bugs qui les affectent ont un impact significatif et peuvent provoquer des dommages graves lorsqu'ils compilent silencieusement de manière incorrecte une application critique pour la sécurité. Une compréhension approfondie des bugs de compilateur peut aider à les détecter et à les corriger. À cette fin, nous menons la première étude empirique sur les caractéristiques des bugs dans deux compilateurs grand public, GCC et LLVM. Notre étude est d'une ampleur significative : elle examine de manière exhaustive environ 50 000 bugs et 30 000 révisions de correctifs de bugs sur une période de plus d'une décennie. Cet article détaille notre étude systématique. Les résultats résumés incluent : (1) Dans les deux compilateurs, C++ est le composant le plus bogué, représentant environ 20 % des bugs totaux et deux fois plus que le deuxième composant le plus bogué ; (2) les cas de test révélant des bugs sont généralement petits, 80 % ayant moins de 45 lignes de code ; (3) la plupart des correctifs de bugs touchent un seul fichier source avec de petites modifications (43 lignes pour GCC et 38 pour LLVM en moyenne) ; (4) la durée de vie moyenne des bugs GCC est de 200 jours, et de 111 jours pour LLVM ; et (5) une priorité élevée tend à être assignée aux bugs d'optimiseur, notamment 30 % des bugs dans le composant d'analyse interprocédurale de GCC sont étiquetés P1 (la plus haute priorité). Cette étude approfondit notre compréhension des bugs de compilateur. Pour les développeurs d'applications, elle montre que même les compilateurs de production matures ont encore de nombreux bugs, ce qui peut affecter le développement. Pour les chercheurs et les développeurs de compilateurs, elle met en lumière les caractéristiques intéressantes des bugs de compilateur et souligne les défis et opportunités pour tester et déboguer les compilateurs de manière plus efficace.
Sun et al. (Jeu,) ont étudié cette question.