Source-code Transformations for Efficient Reversibility
Perumalla, Kalyan S.
Fujimoto, Richard M.
MetadataShow full item record
An approach based on source-to-source compilation is presented for efficiently realizing reversibility of programs, in the context of the C language. The implementation of this approach in a portable "reverse C compiler" called rcc is described. The compiler takes arbitrary C functions as input, and renders them reversible, and, in addition, automatically generates their reverse functions. The system is sufficiently general to correctly handle complex data types and to handle complex control flow such as recursion and inter-mixing jump instructions. The compiler is designed to be general-purpose, to be used in any application requiring efficient reverse execution capability. A simple macro interface is used to help retarget the compiler to different application domains. As a case study, the application of rcc to optimistic parallel simulation is presented. Optimizations, such as "message-send slicing", are presented that help in reducing the overheads that may be added for achieving reversibility.