Understanding GCC Builtins to Develop Better Tools

作者: Hanspeter Mössenböck , Bram Adams , Stefan Marr , Manuel Rigger

DOI:

关键词: Feature (computer vision)ImplementationComputer scienceSoftware engineeringCompiler

摘要: C programs can use compiler builtins to provide functionality that the language lacks. On Linux, GCC provides several thousands of are also supported by other mature compilers, such as Clang and ICC. Maintainers tools lack guidance on whether which should be implemented support popular projects. To assist tool developers who want builtins, we analyzed builtin in 4,913 projects from GitHub. We found 37% these relied at least one builtin. Supporting an increasing proportion requires exponentially number builtins; however, implementing only 10 already covers over 30% Since many our corpus remained unused, effort needed 90% is moderate, requiring about 110 implemented. For each project, evolution time majority mostly added builtins. This suggests not a legacy feature must future tools. Systematic testing existing revealed lacked for either partially or completely; discovered incorrect implementations various tools, including formally verified CompCert compiler.

参考文章(52)
Zhongxing Xu, Ted Kremenek, Jian Zhang, None, A memory model for static analysis of C programs leveraging applications of formal methods. pp. 535- 548 ,(2010) , 10.1007/978-3-642-16558-0_44
Ewan Tempero, James Noble, Hayden Melton, How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software ECOOP 2008 – Object-Oriented Programming. pp. 667- 691 ,(2008) , 10.1007/978-3-540-70592-5_28
Cristian Cadar, Daniel Dunbar, Dawson Engler, KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs operating systems design and implementation. pp. 209- 224 ,(2008) , 10.5555/1855741.1855756
Konstantin Serebryany, Derek Bruening, Alexander Potapenko, Dmitry Vyukov, AddressSanitizer: a fast address sanity checker usenix annual technical conference. pp. 28- 28 ,(2012)
Chris Hathhorn, Chucky Ellison, Grigore Roşu, Defining the undefinedness of C programming language design and implementation. ,vol. 50, pp. 336- 345 ,(2015) , 10.1145/2737924.2737979
Marcia W DiStaso, Denise Sevick Bortree, None, Multi-method analysis of transparency in social media practices: Survey, interviews and content analysis Public Relations Review. ,vol. 38, pp. 511- 514 ,(2012) , 10.1016/J.PUBREV.2012.01.003
John L. Campbell, Charles Quincy, Jordan Osserman, Ove K. Pedersen, Coding In-depth Semistructured Interviews Problems of Unitization and Intercoder Reliability and Agreement Sociological Methods & Research. ,vol. 42, pp. 294- 320 ,(2013) , 10.1177/0049124113500475
Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, Boris Yakobowski, Frama-C: A software analysis perspective Formal Aspects of Computing. ,vol. 27, pp. 573- 609 ,(2015) , 10.1007/S00165-014-0326-7
Andrew Sutton, Ryan Holeman, Jonathan I. Maletic, Identification of Idiom Usage in C++ Generic Libraries international conference on program comprehension. pp. 160- 169 ,(2010) , 10.1109/ICPC.2010.37
Vladimir Filkov, Baishakhi Ray, Casey Casalnuovo, Prem Devanbu, Abilio Oliveira, Assert use in GitHub projects international conference on software engineering. ,vol. 1, pp. 755- 766 ,(2015) , 10.5555/2818754.2818846