1 Putting Randomized Compiler Testing into 2 Production 3 Alastair F. Donaldson 4 Google, UK 5 Imperial College London, UK 6
[email protected] 7 Hugues Evrard 8 Google, UK 9
[email protected] 10 Paul Thomson 11 Google, UK 12
[email protected] 13 Abstract 14 We describe our experience over the last 18 months on a compiler testing technology transfer project: 15 taking the GraphicsFuzz research project on randomized metamorphic testing of graphics shader 16 compilers, and building the necessary tooling around it to provide a highly automated process 17 for improving the Khronos Vulkan Conformance Test Suite (CTS) with test cases that expose 18 fuzzer-found compiler bugs, or that plug gaps in test coverage. We present this tooling for test 19 automation—gfauto—in detail, as well as our use of differential coverage and test case reduction 20 as a method for automatically synthesizing tests that fill coverage gaps. We explain the value 21 that GraphicsFuzz has provided in automatically testing the ecosystem of tools for transforming, 22 optimizing and validating Vulkan shaders, and the challenges faced when testing a tool ecosystem 23 rather than a single tool. We discuss practical issues associated with putting automated metamorphic 24 testing into production, related to test case validity, bug de-duplication and floating-point precision, 25 and and provide illustrative examples of bugs found during our work. 26 2012 ACM Subject Classification Software and its engineering → Compilers; Software and its 27 engineering → Software testing and debugging 28 Keywords and phrases Compilers, metamorphic testing, 3D graphics, experience report 29 Digital Object Identifier 10.4230/LIPIcs.ECOOP.2020.22 30 Category Experience Report 31 1 Introduction 32 Graphics processing units (GPUs) provide hardware-accelerated graphics in many scenarios, 33 such as 3D and 2D games, applications, web browsers, and operating system user interfaces.