Understanding GCC Builtins to Develop Better Tools

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

Research output: Chapter in Book/Report/Conference proceedingConference proceedingspeer-review

Abstract

C programs frequently use compiler builtins for functionality that the C standard library lacks. On Linux, GCC provides several thousand builtins, and most other tools that process C code support only a subset of them. To assist tool developers that want to support the GCC builtins in their tools, we analyzed their use in 4912 C projects that we obtained from GitHub. We found that 37.6% of the projects relied at least on one builtin. We determined that the effort needed for implementing builtins is exponential; however, by implementing only 10 builtins already over 30% of the projects could be supported. Since we found that many builtins were not used in any project, the effort needed to support 99% of projects is moderate with around 1600 builtins that need to be implemented. We analyzed the builtin development over time time and found that projects mostly added builtin usages; nevertheless, sometimes they were removed, for example, to reduce the technical debt associated with their usage.
Original languageEnglish
Title of host publicationProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Tallinn, Estonia
PublisherACM
Pages74-85
Number of pages12
DOIs
Publication statusPublished - Aug 2019

Fields of science

  • 102 Computer Sciences
  • 102009 Computer simulation
  • 102011 Formal languages
  • 102013 Human-computer interaction
  • 102022 Software development
  • 102024 Usability research
  • 102029 Practical computer science

JKU Focus areas

  • Digital Transformation

Cite this