{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,8]],"date-time":"2026-10-08T11:50:43Z","timestamp":1791460243697,"version":"4.3.4"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>Compilers should not crash and they should not miscompile applications. Random testing is an effective method for finding compiler bugs that have escaped other kinds of testing. This paper presents Yet Another Random Program Generator (YARPGen), a random test-case generator for C and C++ that we used to find and report more than 220 bugs in GCC, LLVM, and the Intel\u00ae C++ Compiler. Our research contributions include a method for generating expressive programs that avoid undefined behavior without using dynamic checks, and generation policies, a mechanism for increasing diversity of generated code and for triggering more optimizations. Generation policies decrease the testing time to find hard-to-trigger compiler bugs and, for the kinds of scalar optimizations YARPGen was designed to stress-test, increase the number of times these optimizations are applied by the compiler by an average of 20% for LLVM and 40% for GCC. We also created tools for automating most of the common tasks related to compiler fuzzing; these tools are also useful for fuzzers other than ours.<\/jats:p>","DOI":"10.1145\/3428264","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T18:36:06Z","timestamp":1606242966000},"page":"1-25","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":140,"title":["Random testing for C and C++ compilers with YARPGen"],"prefix":"10.1145","volume":"4","author":[{"given":"Vsevolod","family":"Livinskii","sequence":"first","affiliation":[{"name":"University of Utah, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Dmitry","family":"Babokin","sequence":"additional","affiliation":[{"name":"Intel Corporation, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"John","family":"Regehr","sequence":"additional","affiliation":[{"name":"University of Utah, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","first-page":"33","volume-title":"Proceedings of the Second ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft '15)","author":"Amalfitano Domenico"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3178372.3179521"},{"key":"e_1_2_2_3_1","doi-asserted-by":"crossref","volume-title":"Liveness-Driven Random Program Generation","author":"Barany Gerg\u00f6","DOI":"10.1007\/978-3-319-94460-9_7"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062349"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3338970"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3368089.3409729"},{"key":"e_1_2_2_7_1","doi-asserted-by":"crossref","unstructured":"Colin J Burgess and M Saidi. 1996. The automatic generation of test cases for optimizing Fortran compilers. Information and Software Technology 38 2 ( 1996 ) 111-119.  Colin J Burgess and M Saidi. 1996. The automatic generation of test cases for optimizing Fortran compilers. Information and Software Technology 38 2 ( 1996 ) 111-119.","DOI":"10.1016\/0950-5849(95)01055-6"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3363562"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2009.02.022"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3213846.3213848"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-33826-7_16"},{"key":"e_1_2_2_12_1","volume-title":"2015 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE). 482-493","author":"Dewey K."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1450058.1450093"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2338965.2336763"},{"key":"e_1_2_2_15_1","doi-asserted-by":"crossref","unstructured":"Atsushi Hashimoto and Nagisa Ishiura. 2016. Detecting arithmetic optimization opportunities for C compilers by randomly generated equivalent programs. IPSJ Transactions on System LSI Design Methodology 9 ( 2016 ) 21-29.  Atsushi Hashimoto and Nagisa Ishiura. 2016. Detecting arithmetic optimization opportunities for C compilers by randomly generated equivalent programs. IPSJ Transactions on System LSI Design Methodology 9 ( 2016 ) 21-29.","DOI":"10.2197\/ipsjtsldm.9.21"},{"key":"e_1_2_2_16_1","unstructured":"R. Huang W. Sun Y. Xu H. Chen D. Towey and X. Xia. 2019. A Survey on Adaptive Random Testing. IEEE Transactions on Software Engineering ( 2019 ).  R. Huang W. Sun Y. Xu H. Chen D. Towey and X. Xia. 2019. A Survey on Adaptive Random Testing. IEEE Transactions on Software Engineering ( 2019 )."},{"key":"e_1_2_2_17_1","volume-title":"201x: Programming Languages-C","author":"International Organization for Standardization 2011. ISO\/IEC 9899"},{"key":"e_1_2_2_18_1","volume-title":"Standard for Programming Language C++","author":"International Organization for Standardization 2012. ISO\/IEC N3337","year":"2012"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594334"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814319"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1085130.1085132"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1609\/aaai.v33i01.33011044"},{"key":"e_1_2_2_23_1","volume-title":"A Systematic Impact Study for Fuzzer-Found Compiler Bugs. arXiv preprint arXiv","author":"Marcozzi Micha\u00ebl","year":"1902"},{"key":"e_1_2_2_24_1","first-page":"1","article-title":"Diferential Testing for Software","volume":"10","author":"McKeeman William M.","year":"1998","journal-title":"Digital Technical Journal"},{"key":"e_1_2_2_25_1","volume-title":"Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2012 ). 48-53","author":"Nagai Eriko","year":"2012"},{"key":"e_1_2_2_26_1","volume-title":"Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2013 ). 88-93","author":"Nagai Eriko","year":"2013"},{"key":"e_1_2_2_27_1","doi-asserted-by":"crossref","unstructured":"Eriko Nagai Atsushi Hashimoto and Nagisa Ishiura. 2014. Reinforcing random testing of arithmetic optimization of C compilers by scaling up size and number of expressions. IPSJ Transactions on System LSI Design Methodology 7 ( 2014 ) 91-100.  Eriko Nagai Atsushi Hashimoto and Nagisa Ishiura. 2014. Reinforcing random testing of arithmetic optimization of C compilers by scaling up size and number of expressions. IPSJ Transactions on System LSI Design Methodology 7 ( 2014 ) 91-100.","DOI":"10.2197\/ipsjtsldm.7.91"},{"key":"e_1_2_2_28_1","volume-title":"2016 IEEE Asia Pacific Conference on Circuits and Systems (APCCAS). 676-679","author":"Nakamura K."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2998392.2998397"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254104"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1460833.1460869"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984038"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/186025.186103"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428264","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428264","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T18:02:57Z","timestamp":1750183377000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428264"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":34,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428264"],"URL":"https:\/\/doi.org\/10.1145\/3428264","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}