Learning how to add a new block

Can someone please recommend any resources for learning how to add a new block to a function?

Are you trying to add an LLVM-IR Basic Block to an LLVM-IR function using a transformation pass over IR?

You can use this member function of BasicBlock class to create a Basic Block.
static BasicBlock * Create (LLVMContext &Context, const Twine &Name="", Function *Parent=nullptr, BasicBlock *InsertBefore=nullptr)
See this: LLVM: llvm::BasicBlock Class Reference