SELGPLAug 27, 2019

K-CONFIG: Using Failing Test Cases to Generate Test Cases in GCC Compilers

arXiv:1908.10481v12 citations
AI Analysis

This addresses compiler reliability for software developers, but it is incremental as it builds on existing test generation methods.

The paper tackles the problem of compiler correctness by proposing K-CONFIG, an approach that uses bug reports from GCC to generate new test inputs, resulting in triggering up to 36 miscompilation failures and 179 crashes in experiments, while the default test generator triggered none.

The correctness of compilers is instrumental in the safety and reliability of other software systems, as bugs in compilers can produce programs that do not reflect the intents of programmers. Compilers are complex software systems due to the complexity of optimization. GCC is an optimizing C compiler that has been used in building operating systems and many other system software. In this paper, we describe K-CONFIG, an approach that uses the bugs reported in the GCC repository to generate new test inputs. Our main insight is that the features appearing in the bug reports are likely to reappear in the future bugs, as the bugfixes can be incomplete or those features may be inherently challenging to implement hence more prone to errors. Our approach first clusters the failing test input extracted from the bug reports into clusters of similar test inputs. It then uses these clusters to create configurations for Csmith, the most popular test generator for C compilers. In our experiments on two versions of GCC, our approach could trigger up to 36 miscompilation failures, and 179 crashes, while Csmith with the default configuration did not trigger any failures. This work signifies the benefits of analyzing and using the reported bugs in the generation of new test inputs.

Code Implementations1 repo
Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes