Improve MergeFunctions to incorporate MergeSimilarFunction patches and ThinLTO Support


I am Vishal Chebrolu, a student from India working on “Improve MergeFunctions to incorporate MergeSimilarFunction patches and ThinLTO Support” as a Google Summer of Code project. Thanks to the community for providing feedback to my GSoC proposal. I discussed with my mentors Aditya, JF and improved my previous proposal. We made a few changes and brought up a new plan.

This plan addresses the various activities required to achieve the project outcomes. The major outcome is to provide MergeFunctions with the capability to merge not just identical but similar functions too. This can help in the code-size reduction and gain in compile times if the amount of optimization work to do is reduced. We also consider the issue of maintaining sync of the IR with MergeFunction comparators and prevent mis-compiles.

Here’s the proposal.

Any feedback is highly appreciated!
Thanks :slight_smile:



As a part of benchmarking in my project, I measured the build times and build sizes of MySQL-Server, LLVM, and Qemu using my system compiler(Apple Clang) and LLVM compiler. The results and the details of the checkout hashes and my machine specs are given below. We are thinking of using these projects as benchmarks for measuring build time and size.


System Compiler (Apple Clang)

LLVM Compiler

Build Time

Build Size

(on disk)

Build Time

Build Size

(on disk)


real 83m53.688s

user 75m29.850s

sys 5m41.172s


real 109m39.282s

user 99m43.071s

sys 6m13.283s



real 72m0.505s

user 260m44.044s

sys 11m3.760s


real 97m59.186s

user 356m12.425s

sys 12m28.626s



real 6m48.850s

user 5m33.292s

sys 1m2.211s


real 8m34.970s

user 7m10.967s

sys 1m1.773s


Apple Clang Version - Apple LLVM version 10.0.1 (clang-1001.0.46.4)

LLVM Compiler Version - clang version 11.0.0

LLVM Compiler Checkout hash - e5bb542362dfbb6c57a597810d740987afbc4202

(Wed May 27 21:13:08 2020)

Project Checkout hashes :

MySQL-Server : 7d10c82196c8e45554f27c00681474a9fb86d137

LLVM : e5bb542362dfbb6c57a597810d740987afbc4202

Qemu : c86274bc2e34295764fb44c2aef3cf29623f9b4b

Machine Specs :

MacBook Air (Early 2015)

OS - macOS Mojave 10.14.6

Processor - 1.6 GHz Intel Core i5

Memory - 8 GB 1600 MHz DDR3

Graphics - Intel HD Graphics 6000 1536 MB