Proceedings of the 2016 7th ACM SIGPLAN Symposium on Scala 2016
DOI: 10.1145/2998392.2998397
|View full text |Cite
|
Sign up to set email alerts
|

RandIR: differential testing for embedded compilers

Abstract: This paper describes RandIR, a tool for differential testing of compilers using random instances of a given intermediate representation (IR). RandIR assumes no fixed target language but instead supports extensible IR-definitions through an internal IR-independent representation of operations. This makes it particularly well suited to test embedded compilers for multi-stage programming, which is our main use case. The ideas underlying our work, however, are more generally applicable. RandIR is able to automatic… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
2
0
2

Year Published

2021
2021
2024
2024

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 18 publications
(4 citation statements)
references
References 18 publications
0
2
0
2
Order By: Relevance
“…As this example shows, let-insertion is non-compositional: it scrambles the nesting of generated binding forms, opening the possibility of generating code with unbound or mistakenly bound variables [KKS15]. It is not a mere possibility: generating code with unbound variables does occur in practice, and is difficult to debug, as reported in [ORP16]. The non-compositionality becomes glaring when generating recursive (and especially mutually recursive) definitions [YK19].…”
Section: (The Parentheses Show the Corresponding Nested Scopes)mentioning
confidence: 98%
“…As this example shows, let-insertion is non-compositional: it scrambles the nesting of generated binding forms, opening the possibility of generating code with unbound or mistakenly bound variables [KKS15]. It is not a mere possibility: generating code with unbound variables does occur in practice, and is difficult to debug, as reported in [ORP16]. The non-compositionality becomes glaring when generating recursive (and especially mutually recursive) definitions [YK19].…”
Section: (The Parentheses Show the Corresponding Nested Scopes)mentioning
confidence: 98%
“…Outros trabalhos na área de teste diferencial de compiladores também foram desenvolvidos para outras linguagens de programac ¸ão, buscando utilizar maneiras de otimizar e melhorar a qualidade dos testes. Como exemplo, pode-se citar os trabalhos de McKeeman [McKeeman 1998] que utilizou esta abordagem para testes na linguagem C, e Ofenbeck et al [Ofenbeck et al 2016] que fez uso desta abordagem para testar o compilador de C++, dentre outros.…”
Section: Trabalhos Relacionadosunclassified
“…O teste diferencial de compiladores, tem como foco principal a utilizac ¸ão de casos de teste (que podem ser gerados aleatoriamente) para comparar dois ou mais sistemas[McKeeman 1998]. Os compiladores devem passar por uma bateria de testes, onde ambos devem receber os mesmos parâmetros de entrada, e caso ocorra uma incongruência nos testes, como um crash ou um loop por exemplo, isto indicará que existe um bug em um dos compiladores, tendo como probabilidade maior um erro no compilador não oficial[Ofenbeck et al 2016].O maior desafio no teste diferencial é garantir a qualidade dos testes, já que é necessário que parâmetros eficientes sejam utilizados. Neste sentido, a utilizac ¸ão de testes gerados de forma aleatória podem auxiliar no processo, uma vez que tendem a ter uma cobertura maior do código base do compilador.…”
unclassified
“…Random test case generation -or fuzzing -is a widely used technique for automated compiler bug detection [11,13,39]. It is often used together with differential testing [31,45,54] to discover unexpected program behavior. In the context of fuzzing JS compilers, a randomly generated JS program and its input forms a test case, which is executed by multiple JS engines.…”
Section: Introductionmentioning
confidence: 99%