[GSoC] Final Report of Fix miscompilation issues in LLVM IR using the ‘Freeze’ instruction

Hello LLVM devs!

This summer, as a participant of GSoC, I fixed some miscompilation problems with freeze instruction and improved existing optimization freeze-aware.

Freeze reduces LLVM’s miscompilation issues, but it can cause a performance regression.

Because both correctness and performance are important, I tried to write patches that satisfy both.

You can find more details about what I did during this summer in my final report. (https://github.com/hyeongyukim/GSoC2021/blob/main/report.md)

Feel free to ask me anything about my project!

And… As I wrote in the future work section, my project is not completely finished yet.

One of the initial goals was to fix the LoopUnswitch’s miscompilation issue, but it is not fixed due to performance regression.

Therefore, I will keep going to send the patches.

And a few days ago, I sent a patch to turn on noundef analysis to reduce the performance regression, so I’d appreciate it if you could check it.

Best regards,

Hyeongyu