15-745 Optimizing Compilers: Safe C using Fat Pointers
Project Proposal
Proposal
Initial version:
- Implementation of an analysis pass that determines which pointers should become fat pointers
- Implementation of a pass that translates normal pointers to fat pointers and adds the necessary
dynamic checks to the code
- Evaluation of this initial version of the project in terms of percentage of fat pointers and overhead
- You can also check the slides for my milestone presentation
Optimizations
In order to decrease the overhead introduced by the fat pointers, we have implemented the following optimizations :
- PRE for dynamic checks
- Loop Bound Checks: If a pointers is incremented/decremented by an expression that depends on the induction variable of the loop, we can check that the loop bounds never cause that expression to be greater or less than the memory region bounds and eliminate the checks inside the loop body.
- Loop Unroll We can also unroll a loop and check different pointers from different iterations at once
- Forward Pointers: Some pointers only require dynamic checks for their upper bound, since they are only incremente
Final Report
Report
Miguel Silva
Last modified: Wed May 6 19:38:52 EDT 2009