UROP Proceeding 2024-25

School of Engineering Department of Computer Science and Engineering 142 Finding Bugs in Compilers with/without AI Techniques Supervisor: TIAN Yongqiang / CSE Student: YAN Zhangcheng / COMP Course: UROP 1100, Fall When we compile a C/C++ program, we can often pass in additional flags to exert finer-grain control over the binary executable file. Debug flags, which are widely supported by different compilers, can be included to generate debugging information. These aids debugging of the source code by allowing the programmer to execute the program one step at a time, see and set the values of intermediate variables, etc. However, debugging information is generally believed to increase running time and the size of the executable file, thus is seldom used in the release version of the software. This report will try to compare and analyze the impact of debugging information on running time in different C/C++ programs. Finding Bugs in Compilers with/without AI Techniques Supervisor: TIAN Yongqiang / CSE Student: ZHANG Puyang / COMP Course: UROP 1100, Spring This project evaluates GCC’s adherence to Compilation Consistency Modulo Debug Information (CCMD) by combining automated C code generation with AST-based transformations. We employ Csmith to generate random, valid C programs, which are then modified using a custom Clang-based tool to increase structural complexity. Each program is compiled twice—once with debug information and once without. The resulting binaries are compared through disassembly analysis. A Python script automates the generation, compilation, and binary comparison process. Initial results which test one hundred c programs each time show no discrepancies, suggesting GCC’s compliance with CCMD. Future work includes refining AST transformations and enhancing tool adaptability. Finding Bugs in Compilers with/without AI Techniques Supervisor: TIAN Yongqiang / CSE Student: ZHANG Yimo / COMP Course: UROP 1100, Fall UROP 2100, Spring Compilers serve as a bridge between programs and actual executable files. When a compiler error occurs, it can cause significant issues and is very difficult to detect and correct. This project builds upon the work from previous semesters to detect potential errors in compilers. However, this approach requires less languagespecific knowledge and can be adapted to different languages with minimal modifications. This is achieved through the use of LLMs (Large Language Models), which replace the components requiring languagespecific expertise in the original project.

RkJQdWJsaXNoZXIy NDk5Njg=