Dear all,<br><br>I would like to propose an average technical project that might have a great use in many parts/derivatives of LLVM, including ours.<br><br>Consider you have dozens of regression tests in high-level languages, reporting whether or not the recent changes in compiler are breaking some kind of loop handling (vectorization, parallelization, etc.). Consider you have a post-processing utility, which parses diagnostic output from each test and tries to determine whether particular loop was handled properly.<br>
<br>In lower level, LLVM already has an infrastructure to test if a pass or a backend transforms the given LLVM IR into expected form. Rather than that, this proposal aims to address more high-level scope of use, where developers need to verify the consistency of many parts of compiler pipeline - from frontend to code generation. One natural solution might be to markup loops in high-level language:<br>
<br>#pragma llvm loopname Loop1<br>for (int i = 0; i < n; i++)<br>{<br>    ...<br>}<br><br>and pass this name through the frontend to LLVM IR metadata node or annotation intrinsic attached to the loop header.<br><br>In order to support multiple target languages (we are mostly interested in C and Fortran), it is preferred to have GCC frontend support (maybe over plugin and emitting to debug info, rather than to GIMPLE), and then - to parse this additional info at DragonEgg level.<br>
<br>I'm not sure what is the situation with GSoC for LLVM this year. In any case, we at KernelGen would like to support a student effort in implementing this functionality and invite other groups to co-mentor the process.<br>
<br>Dear students, should you have any questions - please do not hesitate to contact me directly. You can also learn more about our work here [1].<br><br>[1] <a href="https://hpcforge.org/plugins/mediawiki/wiki/kernelgen/index.php/Main_Page">https://hpcforge.org/plugins/mediawiki/wiki/kernelgen/index.php/Main_Page</a><br>
<br>--<br>Best regards,<br>- Dmitry Mikushin, on behalf of KernelGen team<br>