-
Notifications
You must be signed in to change notification settings - Fork 0
Home
This project aims LLVM to eliminate performance BUGs using function cloning as approach.
The ability to reuse software is one of the fundamental skills of the contemporary program developer. However, this skill must be used with discipline, or programmers may insert into their systems modules that do more work than what they need. This phenomenon is called a performance bug.
Detecting this problem is difficult, because it depends on the context in which components are reused. In some contexts all the computations performed by the module may be necessary, in others they may not. In this work, we use function cloning to give the compiler the freedom to solve performance bugs.
We have designed LLVM passes that (i) recognizes problematic functions, (ii) clones them, (iii) eliminates the buggy feature from the clone and (iv) replaces every call of the original function by its new version, whenever the calling context allows it.
- [Gallery of Examples](Gallery of examples): this page illustrates how our implementation of Wu's static branch predictor works. It contains examples of C programs, their CFGs, and the frequency graphs that we produce for them.
- [How to Compile](How to compile): explains how to build these transformation passes.