Creating an LLVM module
In the previous chapter, we got an idea as to how an LLVM IR looks. In LLVM, a module represents a single unit of code that is to be processed together. An LLVM module class is the top-level container for all other LLVM IR objects. The LLVM module contains global variables, functions, data layout, host triples, and so on. Let's create a simple LLVM module.
LLVM provides Module()
constructor for creating a module. The first argument is the name of the module. The second argument is LLVMContext
. Let's get these arguments in the main function and create a module as demonstrated here:
static LLVMContext &Context = getGlobalContext(); static Module *ModuleOb = new Module("my compiler", Context);
For these functions to work, we need to include certain header files:
#include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" using namespace llvm; static LLVMContext &Context = getGlobalContext(); static Module *ModuleOb = new Module("my compiler", Context); int main...