This paper describes a compiler-based approach to checkpointing for pr
ocess recovery. The implementation is transparent to both the programm
er and the hardware. The compiler-generated sparse potential checkpoin
t code maintains the desired checkpoint interval. Adaptive checkpointi
ng reduces the size of the checkpoints. Training is used to select low
-cost, high-coverage potential checkpoints. The problem of selecting p
otential checkpoints is shown to be NP-complete, and a heuristic algor
ithm is introduced that determines a quick suboptimal solution. These
compiler-assisted checkpointing techniques have been implemented in a
modified version of the GNU C (GCC) compiler. Experiments involving th
e modified version of the GCC compiler on a Sun SPARC workstation are
summarized.