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
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
program must still be done. To avoid this unnecessary
recompilation, we have to give the information that, although the
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.