Improve MergeFunctions to incorporate MergeSimilarFunction patches and ThinLTO Support

Hello,

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.

https://docs.google.com/document/d/1vGFNoyXugeCWvkm7n66uWnG3eniUAChezVTU4XuVjnM/edit?usp=sharing

Any feedback is highly appreciated!
Thanks :slight_smile:

Regards,
Vishal

Hi,

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)



MySQL-Server



real 83m53.688s



user 75m29.850s



sys 5m41.172s



941.04MB



real 109m39.282s



user 99m43.071s



sys 6m13.283s



951.2MB




LLVM



real 72m0.505s



user 260m44.044s



sys 11m3.760s



1.59GB



real 97m59.186s



user 356m12.425s



sys 12m28.626s



1.57GB



Qemu



real 6m48.850s



user 5m33.292s



sys 1m2.211s



355.6MB



real 8m34.970s



user 7m10.967s



sys 1m1.773s



361.7MB

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

Regards,

Vishal