My name is Siddharth. I’m a student studying math and computer science at the University of Toronto.
I’m interested in learning more about the LLVM compiler through GSoC. I have no prior experience with LLVM, but I have a strong interest in compilers, and I look forward to learning more.
I would like to pursue one of two potential projects: rewriting bugpoint, and moving optimizations out of the -instacombine pass and into InstructionSimplify.
Is anyone currently working on implementing these? Are these projects suitable for a beginner? Any guidance is much appreciated.
As far as moving optimization out of instcombine to instsimplify pass is concerned, i had done this exercise some time back.
If you look at the ‘visit*’ functions in the instcombine pass, there is always a call to ‘simplify*’ functions which returns ‘Value*’.
It is then used to replace instruction with Value → replaceInstUsesWith(I, V) and return back; if simplify returns any Value. If ‘simplify*’ call
returns a NULL value, further processing of combining instructions take place.
There were instances though, that in this further processing, instructions combination results in a Value instead of a new Instruction.
Such instances could have been handled earlier in ‘simplify*’ call itself. Please look for such instances and try to move them to instsimplify
as a start point in this exercise (Not sure if still such instances exist, please search for them).
Instcombine and Instsimplify are good start point to understand LLVM compiler framework.