Soft errors pose a threat to all types of software-controlled electronic devices and can result in silent data corruptions (SDCs). Compiler optimizations usually target program execution time or memory footprint. They are oblivious of the fault tolerance of the resulting code, yet they might still be beneficial in this regard. However, it is non-trivial to pick a SDC-minimizing subset from the plethora of compiler flags for an individual program. Ideally, a developer could collectively enable reliability-improving optimizations with a single compiler flag.In this paper, we analyze the impact of compiler optimizations on the occurrence of SDCs. We consider nearly all GCC optimizations on x86 under CPU-register faults. We show that the same compiler optimizations can have a positive or negative effect depending on the target program. We search for a beneficial flag combination using a genetic algorithm, accelerated by a machine-learning based SDC predictor. Our findings suggest that while this leads to an improvement over -O0 of 7.1%, -O3 is a good default alternative.
No takes yet. Share an insight, caveat, or question.
Thunig et al. (2024) studied this question.
Synapse has enriched 5 closely related papers on similar clinical questions. Consider them for comparative context: