-
Notifications
You must be signed in to change notification settings - Fork 0
Goals
The goal of the Program Repository work is simple: to reduce developer turn-around times. That is, the time that it takes for a developer, having made a change to their project's source code, to have the resulting program running on the target (whether inside a debugging session or without).
The scope of the work is rather broad, potentially encompassing the compiler, the static linker, the debugger, and even the dynamic linker (although the latter isn't being currently investigated).
To achieve this aim, the project tries to eliminate unnecessary or duplicated work and to enable parallelism wherever possible.
In the compiler this results in support for coarsely incremental compilation: only those functions which may have changed since the last time that the source was compiled need to pass through the optimization and code generation phases. Furthermore we can eliminate objects with so-called "vague linkage" early in the pipeline if they have been previously generated.
In the linker we push as much work as possible to the compiler (where multiple compilations can be performed simultanteously whereas a link is a "join" in the build process). This includes the project-wide elimination of duplicate strings. Early elimination of duplicate COMDAT and DWARF data (again by the compiler) reduces the work necessary.