code examples for learning LLVM backend programmin

2020-02-16 09:56发布

问题:

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 analysis then will be time for program transformations).

Could you recommend resources for learning ? (I know LLVM Programmers manual and Dragon Book ;) ).

By resources I mean not only tutorials, books, but especially small well-written projects. I'd like to read code examples, compile them and play with them (hack a little bit) to learn more about practical implementation.

Those codes does not have to be restricted to analysis part. The topic is LLVM backend programming in general, while analysis and program transformations are most interesting.

回答1:

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.



回答2:

As someone that did what you want to do 3 years ago: LLVM codebase has the best examples. Maybe a good place to start is dominator analysis, as it is well described in compiler books.

Check how it is done in LLVM: http://llvm.org/doxygen/Dominators_8h_source.html

Other place to look might be instruction scheduling.



回答3:

I was looking for something similar, code that uses llvm libraries, and after long session in google I just found it in the llvm website under "llvm projects": http://llvm.org/ProjectsWithLLVM/

just download what you think relevant for you and play along.