Software Practice and Experience · 1992 · 72 citations · 4 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureProgramming LanguagesCompiler ConstructionControl-flow AnalysisRuntime SystemsCompiler DesignCompiler SupportDump DetectionRuntime Code Generation
Abstract Run‐time checking of array subscripts and pointer bounds was added to the Portable C Compiler (PCC). Memory overwrite bugs are then caught as they happen instead of when the overwritten memory is used later in the program execution. The run‐time checking compiler is used both to find the true cause of a core dump and to eliminate run‐time errors as the cause of unexpected program behavior. On average, it takes about 40 percent longer to compile, the generated code is about three times larger, and it runs about ten times slower. This performance may seem slow, but it typically reduces days of debugging to less than an hour. The implementation described herein can be adapted to any C compiler as it describes how to generate run‐time checking code in a machine/compiler independent way by changing the intermediate expression trees. In four years of use it has found latent bugs and the cause of intermittent core dumps in programs used for many years by thousands of people.
4
The SNOBOL 4 Programming Language
Henry Mullish, Paul Steier, Ralph E. Griswold et al. · Mathematics of Computation · 1970 · 233 citations
S. C. Johnson · 1978 · 122 citations · Full text
Economic range checks in pascal
James M. Welsh · Software Practice and Experience · 1978 · 23 citations