{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,2]],"date-time":"2026-10-02T13:33:17Z","timestamp":1790947997131,"version":"4.1.0"},"reference-count":35,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","license":[{"start":{"date-parts":[[2023,6,6]],"date-time":"2023-06-06T00:00:00Z","timestamp":1686009600000},"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":[[2023,6,6]]},"abstract":"<jats:p>Compilers are part of the foundation upon which software systems are built; they need to be as correct as possible. This paper is about stress-testing loop optimizers; it presents a major reimplementation of Yet Another Random Program Generator (YARPGen), an open-source generative compiler fuzzer. This new version has found 122 bugs, both in compilers for data-parallel languages, such as the Intel\u00ae Implicit SPMD Program Compiler and the Intel\u00ae oneAPI DPC++ compiler, and in C++ compilers such as GCC and Clang\/LLVM. The first main contribution of our work is a novel method for statically avoiding undefined behavior when generating loops; the resulting programs conform to the relevant language standard, enabling automated testing. The second main contribution is a collection of mechanisms for increasing the diversity of generated loop code; in our evaluation, we demonstrate that these make it possible to trigger loop optimizations significantly more often, providing opportunities to discover bugs in the optimizers.<\/jats:p>","DOI":"10.1145\/3591295","type":"journal-article","created":{"date-parts":[[2023,6,6]],"date-time":"2023-06-06T20:06:24Z","timestamp":1686081984000},"page":"1826-1847","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":44,"title":["Fuzzing Loop Optimizations in Compilers for C++ and Data-Parallel Languages"],"prefix":"10.1145","volume":"7","author":[{"ORCID":"https:\/\/orcid.org\/0009-0005-4802-1702","authenticated-orcid":false,"given":"Vsevolod","family":"Livinskii","sequence":"first","affiliation":[{"name":"University of Utah, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0000-4338-3337","authenticated-orcid":false,"given":"Dmitry","family":"Babokin","sequence":"additional","affiliation":[{"name":"Intel Corporation, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7025-4610","authenticated-orcid":false,"given":"John","family":"Regehr","sequence":"additional","affiliation":[{"name":"University of Utah, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2023,6,6]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0950-5849(97)00017-7"},{"key":"e_1_2_1_2_1","volume-title":"2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/TechTalk18-AutomatedTranslationValidation.pdf [Online, accessed 03-16-2023]","author":"Boushehri Nader","year":"2022","unstructured":"Nader Boushehri , Ryan Berger , Stefan Mada , and John Regehr . 2022 . Automated Translation Validation for an LLVM Backend . Presented at 2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/TechTalk18-AutomatedTranslationValidation.pdf [Online, accessed 03-16-2023] Nader Boushehri, Ryan Berger, Stefan Mada, and John Regehr. 2022. Automated Translation Validation for an LLVM Backend. Presented at 2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/TechTalk18-AutomatedTranslationValidation.pdf [Online, accessed 03-16-2023]"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1016\/0950-5849(95)01055-6"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3363562"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3213846.3213848"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3324884.3418933"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-022-10146-1"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01407835"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01379404"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2338965.2336763"},{"key":"e_1_2_1_11_1","unstructured":"William Hatch Pierce Darragh and Eric Eide. 2023. Xsmith. https:\/\/gitlab.flux.utah.edu\/xsmith\/xsmith [Online accessed 03-16-2023] \t\t\t\t  William Hatch Pierce Darragh and Eric Eide. 2023. Xsmith. https:\/\/gitlab.flux.utah.edu\/xsmith\/xsmith [Online accessed 03-16-2023]"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2021.3058671"},{"key":"e_1_2_1_13_1","unstructured":"Khronos \u00ae SYCL\u2122 Working Group. 2020. SYCL\u2122 Specification 1.2.1. https:\/\/registry.khronos.org\/SYCL\/specs\/sycl-1.2.1.pdf [Online accessed 12-08-2022] \t\t\t\t  Khronos \u00ae SYCL\u2122 Working Group. 2020. SYCL\u2122 Specification 1.2.1. https:\/\/registry.khronos.org\/SYCL\/specs\/sycl-1.2.1.pdf [Online accessed 12-08-2022]"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2666356.2594334"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2858965.2814319"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737986"},{"key":"e_1_2_1_17_1","unstructured":"Martin Li\u0161ka. 2022. C-Vise. https:\/\/github.com\/marxin\/cvise [Online accessed 11-08-2022] \t\t\t\t  Martin Li\u0161ka. 2022. C-Vise. https:\/\/github.com\/marxin\/cvise [Online accessed 11-08-2022]"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1609\/aaai.v33i01.33011044"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485529"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454030"},{"key":"e_1_2_1_21_1","volume-title":"Structured Parallel Programming: Patterns for Efficient Computation","author":"McCool Michael","unstructured":"Michael McCool , James Reinders , and Arch Robison . 2012. Structured Parallel Programming: Patterns for Efficient Computation ( 1 st ed.). Morgan Kaufmann Publishers Inc ., San Francisco, CA, USA. isbn:978-0-12-391443-9 Michael McCool, James Reinders, and Arch Robison. 2012. Structured Parallel Programming: Patterns for Efficient Computation (1st ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA. isbn:978-0-12-391443-9","edition":"1"},{"key":"e_1_2_1_22_1","volume-title":"Random Testing of C Compilers Targeting Arithmetic Optimization. In Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI","author":"Nagai Eriko","year":"2012","unstructured":"Eriko Nagai , Hironobu Awazu , Nagisa Ishiura , and Naoya Takeda . 2012 . Random Testing of C Compilers Targeting Arithmetic Optimization. In Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2012). 48\u201353. Eriko Nagai, Hironobu Awazu, Nagisa Ishiura, and Naoya Takeda. 2012. Random Testing of C Compilers Targeting Arithmetic Optimization. In Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2012). 48\u201353."},{"key":"e_1_2_1_23_1","volume-title":"Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI","author":"Nagai Eriko","year":"2013","unstructured":"Eriko Nagai , Atsushi Hashimoto , and Nagisa Ishiura . 2013 . Scaling up Size and Number of Expressions in Random Testing of Arithmetic Optimization of C Compilers . In Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2013). 88\u201393. Eriko Nagai, Atsushi Hashimoto, and Nagisa Ishiura. 2013. Scaling up Size and Number of Expressions in Random Testing of Arithmetic Optimization of C Compilers. In Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2013). 88\u201393."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.2197\/ipsjtsldm.7.91"},{"key":"e_1_2_1_25_1","volume-title":"Proc. of the Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI","author":"Nakamura Kazuhiro","year":"2015","unstructured":"Kazuhiro Nakamura and Nagisa Ishiura . 2015 . Introducing Loop Statements in Random Testing of C Compilers Based on Expected Value Calculation . In Proc. of the Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2015). 226\u2013227. Kazuhiro Nakamura and Nagisa Ishiura. 2015. Introducing Loop Statements in Random Testing of C Compilers Based on Expected Value Calculation. In Proc. of the Workshop on Synthesis And System Integration of Mixed Information Technologies (SASIMI 2015). 226\u2013227."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/APCCAS.2016.7804063"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/InPar.2012.6339601"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2345156.2254104"},{"key":"e_1_2_1_29_1","volume-title":"2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/Lightning2-ImprovingIRFuzzingWithMoreDiversifiedInput.pdf [Online, accessed 03-16-2023]","author":"Rong Yuyang","year":"2022","unstructured":"Yuyang Rong , Stephen Neuendorffer , and Hao Chen . 2022 . IRFuzzer: Improving IR Fuzzing with More Diversified Input . Presented at 2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/Lightning2-ImprovingIRFuzzingWithMoreDiversifiedInput.pdf [Online, accessed 03-16-2023] Yuyang Rong, Stephen Neuendorffer, and Hao Chen. 2022. IRFuzzer: Improving IR Fuzzing with More Diversified Input. Presented at 2022 LLVM Developers\u2019 Meeting. https:\/\/llvm.org\/devmtg\/2022-11\/slides\/Lightning2-ImprovingIRFuzzingWithMoreDiversifiedInput.pdf [Online, accessed 03-16-2023]"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1460833.1460869"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984038"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180236"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1371\/journal.pone.0237749"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2020.110884"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591295","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3591295","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:47:21Z","timestamp":1750178841000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591295"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,6,6]]},"references-count":35,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2023,6,6]]}},"alternative-id":["10.1145\/3591295"],"URL":"https:\/\/doi.org\/10.1145\/3591295","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,6,6]]},"assertion":[{"value":"2023-06-06","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}