compiler testing
Recently Published Documents


TOTAL DOCUMENTS

32
(FIVE YEARS 9)

H-INDEX

9
(FIVE YEARS 2)

2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-30
Author(s):  
Stefanos Chaliasos ◽  
Thodoris Sotiropoulos ◽  
Georgios-Petros Drosos ◽  
Charalambos Mitropoulos ◽  
Dimitris Mitropoulos ◽  
...  

Despite the substantial progress in compiler testing, research endeavors have mainly focused on detecting compiler crashes and subtle miscompilations caused by bugs in the implementation of compiler optimizations. Surprisingly, this growing body of work neglects other compiler components, most notably the front-end. In statically-typed programming languages with rich and expressive type systems and modern features, such as type inference or a mix of object-oriented with functional programming features, the process of static typing in compiler front-ends is complicated by a high-density of bugs. Such bugs can lead to the acceptance of incorrect programs (breaking code portability or the type system's soundness), the rejection of correct (e.g. well-typed) programs, and the reporting of misleading errors and warnings. We conduct, what is to the best of our knowledge, the first empirical study for understanding and characterizing typing-related compiler bugs. To do so, we manually study 320 typing-related bugs (along with their fixes and test cases) that are randomly sampled from four mainstream JVM languages, namely Java, Scala, Kotlin, and Groovy. We evaluate each bug in terms of several aspects, including their symptom, root cause, bug fix's size, and the characteristics of the bug-revealing test cases. Some representative observations indicate that: (1) more than half of the typing-related bugs manifest as unexpected compile-time errors: the buggy compiler wrongly rejects semantically correct programs, (2) the majority of typing-related bugs lie in the implementations of the underlying type systems and in other core components related to operations on types, (3) parametric polymorphism is the most pervasive feature in the corresponding test cases, (4) one third of typing-related bugs are triggered by non-compilable programs. We believe that our study opens up a new research direction by driving future researchers to build appropriate methods and techniques for a more holistic testing of compilers.


Author(s):  
Richard Schumi ◽  
Jun Sun

AbstractCompilers are error-prone due to their high complexity. They are relevant for not only general purpose programming languages, but also for many domain specific languages. Bugs in compilers can potentially render all programs at risk. It is thus crucial that compilers are systematically tested, if not verified. Recently, a number of efforts have been made to formalise and standardise programming language semantics, which can be applied to verify the correctness of the respective compilers. In this work, we present a novel specification-based testing method named SpecTest to better utilise these semantics for testing. By applying an executable semantics as test oracle, SpecTest can discover deep semantic errors in compilers. Compared to existing approaches, SpecTest is built upon a novel test coverage criterion called semantic coverage which brings together mutation testing and fuzzing to specifically target less tested language features. We apply SpecTest to systematically test two compilers, i.e., the Java compiler and the Solidity compiler. SpecTest improves the semantic coverage of both compilers considerably and reveals multiple previously unknown bugs.


Author(s):  
He Jiang ◽  
Zhide Zhou ◽  
Zhilei Ren ◽  
Jingxuan Zhang ◽  
Xiaochen Li
Keyword(s):  

2020 ◽  
Vol 53 (1) ◽  
pp. 1-36 ◽  
Author(s):  
Junjie Chen ◽  
Jibesh Patra ◽  
Michael Pradel ◽  
Yingfei Xiong ◽  
Hongyu Zhang ◽  
...  
Keyword(s):  

2019 ◽  
Vol 14 (1) ◽  
pp. 1-20 ◽  
Author(s):  
Yixuan Tang ◽  
Zhilei Ren ◽  
Weiqiang Kong ◽  
He Jiang

Sign in / Sign up

Export Citation Format

Share Document