Avoidance of Redundant Recompilations by Propagation of Semantic Fingerprints

During the compilation process, many build systems support incremental builds. This means that the compiler is only invoked, if any of the dependencies have changed. For example, if types.h changes in the given example, the build system will invoke the compiler to regenerate main.o. Furthermore, the linking process that will result in program must also be redone, since main.o changed (and has a newer timestamp).

In recent research, we have build a clang compiler plugin, that can avoid, in some circumstances, the full compilation process for main.o. However, the subsequent linking process for program must still be done. To avoid this unnecessary recompilation, we have to give the information that, although the timestamp changed, main.o was not semantically changed.

The goal of the thesis is to integrate the interaction between a semantic fingerprinting compiler and the build system to avoid subsequent tool invocations.

Relevant Publications

USENIX Conference Best Paper Award
cHash: Detection of Redundant Compilations via AST Hashing.
Christian Dietrich, Valentin Rothberg, Ludwig Füracker, Andreas Ziegler, Daniel Lohmann; In: Proceedings of the 2017 USENIX Annual Technical Conference; USENIX Association, 2017. Best Paper Award.
[PDF] [Slides] [Raw Data] [BibTex]