I am learning programming LLVM backends.
Currently I am interested in analysis passes, later program transformations. (I assume as I will be more fluent with analys
All LLVM transformations are organized as self-contained passes inside lib/Transforms dir, You can read its sources and run any arbitrary pass on your code using opt tool.
Also, there is nice tutorial on how to write your own pass and use it as loadable module without recompiling whole LLVM.
So there is pretty wide playground already.