This paper considers random testing of a compiler, usingrandomly generated programs as inputs, and comparing theirbehaviour with and without optimisation. Since the generated programs must compile, then we need to take intoaccount syntax, scope rules, and type checking during ourrandom generation. Doing so, while attaining a good distribution of test data, proves surprisingly subtle; the maincontribution of this paper is a workable solution to this problem. We used it to generate typed functions on lists, whichwe compiled using the Glasgow Haskell compiler, a matureproduction quality Haskell compiler. After around 20,000tests we triggered an optimiser failure, and automaticallysimplified it to a program with just a few constructs
Black-box property based testing tools like QuickCheck allow developers to write elegant logical spe...
Modern compilers implement a number of optimization switches and they must be configured carefully i...
Automatic generation of random values described by algebraic data types (ADTs) is often a hard task....
This paper considers random testing of a compiler, using randomly generated programs as inputs, and ...
Optimizing compilers are large and complex systems, potentially consisting of millions of lines of c...
Testing is the most commonly used technique for raising confidence in the correctness of a piece of ...
Randomly generating structured objects is important in testing and optimizing functional programs, w...
Fuzzing is a widely-used testing technique to assure software robustness. However, automatic generat...
It is a common practice to perform compiler testing with a set of hand-written sample programs. Howe...
Property-based random testing can facilitate formal verification, exposing errors early on in the pr...
Compilers, as one of the most important infrastructure of today's digital world, are expected to be ...
QuickCheck is a tool which aids the Haskell programmer in formulating and testing properties of prog...
QuickCheck is a tool which aids the Haskell programmer in formulating and testing properties of prog...
Software is everywhere in our daily lives, and it is important that software behaves in ways it is e...
Pre-proceedings paper presented at the 27th International Symposium on Logic-Based Program Synthesis...
Black-box property based testing tools like QuickCheck allow developers to write elegant logical spe...
Modern compilers implement a number of optimization switches and they must be configured carefully i...
Automatic generation of random values described by algebraic data types (ADTs) is often a hard task....
This paper considers random testing of a compiler, using randomly generated programs as inputs, and ...
Optimizing compilers are large and complex systems, potentially consisting of millions of lines of c...
Testing is the most commonly used technique for raising confidence in the correctness of a piece of ...
Randomly generating structured objects is important in testing and optimizing functional programs, w...
Fuzzing is a widely-used testing technique to assure software robustness. However, automatic generat...
It is a common practice to perform compiler testing with a set of hand-written sample programs. Howe...
Property-based random testing can facilitate formal verification, exposing errors early on in the pr...
Compilers, as one of the most important infrastructure of today's digital world, are expected to be ...
QuickCheck is a tool which aids the Haskell programmer in formulating and testing properties of prog...
QuickCheck is a tool which aids the Haskell programmer in formulating and testing properties of prog...
Software is everywhere in our daily lives, and it is important that software behaves in ways it is e...
Pre-proceedings paper presented at the 27th International Symposium on Logic-Based Program Synthesis...
Black-box property based testing tools like QuickCheck allow developers to write elegant logical spe...
Modern compilers implement a number of optimization switches and they must be configured carefully i...
Automatic generation of random values described by algebraic data types (ADTs) is often a hard task....