Hi, I am Shubham Narlawar. Currently, I am a Computer Engineering undergrad student at Pune University, India. I am interested in contributing to GCC for GSOC 2019.
We have done a project from GCC GSOC 2018 idea list which is implementing Csmith fuzzer leveraging GCC C Extensions under the guidance of Andi Kleen. Csmith is a C fuzzer which generates standard C code but no extensions. We implemented few of GCC C extensions in Csmith (which now we call it as "Extended Csmith"). Extended Csmith is now able to fuzz extensions along with standard C code. Following GCC C Extensions are implemented in Csmith currently - 1. Labels as Values (Computed Goto) 2. Local Labels 3. Typeof 4. __int128 - Signed and unsigned integer of size 128 bits. 5. Cast to Union 6. Label attributes - hot cold 7. Variable attributes - a) aligned b) unused c) section 8. Binary constants 9. Statement Expression 10. Transactional memory relaxed - tm_relaxed (not a GCC C extension) Note - Different Combinations of these extensions can be used while generating random C code using extended csmith. Here is the github link of the project. https://github.com/Sameeranjoshi/csmith/tree/gcc-extensions Currently, We are running extended csmith on gcc10 of GCC Compile Farm Project and found following bugs - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89135 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89153 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87118 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89223 We expect to find more bugs in GCC as the gcc compiler is being stress tested now. Code coverage - Csmith vs Extended Csmith Csmith i.e. [without gcc extn ] line - 35.2 function - 43.2 branch - 25.7 Extended Csmith [with gcc extn] line - 35.7 function - 43.9 branch - 26.1 %gain line - 0.5% function - 0.7% branch - 0.4% For GSOC 2019, I am proposing below project idea - Implementation of following extensions in the Csmith - 1. Function attributes - aligned, alloc_align, always_inline, hot, cold, deprecated, nothrow, used, etc 2. Vector extensions 3. Transactional Memory extensions 4. Type attributes and remaining GCC C extensions. Benefits to GCC - 1. Increased code coverage. 2. There is a possibility of finding more bugs after adding the above extensions. Thanks and Regards. Shubham Narlawar