Code template for creating an llvm module from scratch

Hi,

I have been looking for code examples to create an LLVM module from scratch.

The LLVM API is certainly well-documented but may still looks daunting for some. I have googled, and the only found document on this subject (of creating an llvm module from scratch):

http://llvm.org/releases/2.6/docs/tutorial/JITTutorial1.html

should be outdated, given that llvm API evolves at each release. Are you aware of a similar, more recent version of the linked ressource? For information, what I need to do is roughly something like this:

  1. create a new module m
  2. create a new function f
  3. clone the body of an existing function g from a file
  4. put some special instructions into f, and call g at the end of f
  5. put both f and g into m
  6. return an llvm IR code derived from m.

I learned how to handle #4 by writing an LLVM pass (thanks to the ‘hello world’ example at http://llvm.org/docs/WritingAnLLVMPass.html), but have always had difficulties in finding template code for doing #1~#3 and #5. Any resource? Thanks for your help.

Hi,

I have been looking for code examples to create an LLVM module from scratch.

The LLVM API is certainly well-documented but may still looks daunting for
some. I have googled, and the only found document on this subject (of
creating an llvm module from scratch):

http://llvm.org/releases/2.6/docs/tutorial/JITTutorial1.html

I guess this may've been the precursor to the Kaleidoscope tutorial
series that's generally kept up-to-date these days:
http://llvm.org/docs/tutorial/