Object to tie the whole code generation together. Allows access to core LLVM data structures Allows access to LLVM modules Allows access to LLVM Namespace IRBuilder Making A Context called “Module” context = make_unique<LLVMContext>(); builder = std::unique_ptr<IRBuilder<>>(new IRBuilder<>(*context)); module = make_unique<Module>("Module", *context);