+ See the method [llvm::BasicBlock::eraseFromParent]. *)
+val delete_block : llbasicblock -> unit
+
+(** [remove_block bb] removes the basic block [bb] from its parent function.
+ See the method [llvm::BasicBlock::removeFromParent]. *)
+val remove_block : llbasicblock -> unit
+
+(** [move_block_before pos bb] moves the basic block [bb] before [pos].
+ See the method [llvm::BasicBlock::moveBefore]. *)
+val move_block_before : llbasicblock -> llbasicblock -> unit
+
+(** [move_block_after pos bb] moves the basic block [bb] after [pos].
+ See the method [llvm::BasicBlock::moveAfter]. *)
+val move_block_after : llbasicblock -> llbasicblock -> unit
+
+(** [append_block c name f] creates a new basic block named [name] at the end of
+ function [f] in the context [c].
+ See the constructor of [llvm::BasicBlock]. *)
+val append_block : llcontext -> string -> llvalue -> llbasicblock
+
+(** [insert_block c name bb] creates a new basic block named [name] before the
+ basic block [bb] in the context [c].
+ See the constructor of [llvm::BasicBlock]. *)
+val insert_block : llcontext -> string -> llbasicblock -> llbasicblock
+
+(** [block_parent bb] returns the parent function that owns the basic block.
+ See the method [llvm::BasicBlock::getParent]. *)
+val block_parent : llbasicblock -> llvalue
+
+(** [block_begin f] returns the first position in the basic block list of the
+ function [f]. [block_begin] and [block_succ] can be used to iterate over
+ the basic block list in order.
+ See the method [llvm::Function::begin]. *)
+val block_begin : llvalue -> (llvalue, llbasicblock) llpos
+
+(** [block_succ bb] returns the basic block list position succeeding
+ [Before bb].
+ See the method [llvm::Function::iterator::operator++]. *)
+val block_succ : llbasicblock -> (llvalue, llbasicblock) llpos
+
+(** [iter_blocks f fn] applies function [f] to each of the basic blocks
+ of function [fn] in order. Tail recursive. *)
+val iter_blocks : (llbasicblock -> unit) -> llvalue -> unit
+
+(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where
+ [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *)
+val fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a
+
+(** [block_end f] returns the last position in the basic block list of
+ the function [f]. [block_end] and [block_pred] can be used to iterate
+ over the basic block list in reverse.
+ See the method [llvm::Function::end]. *)
+val block_end : llvalue -> (llvalue, llbasicblock) llrev_pos
+
+(** [block_pred bb] returns the basic block list position preceding [After bb].
+ See the method [llvm::Function::iterator::operator--]. *)
+val block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos
+
+(** [block_terminator bb] returns the terminator of the basic block [bb]. *)
+val block_terminator : llbasicblock -> llvalue option
+
+(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks
+ of function [fn] in reverse order. Tail recursive. *)
+val rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit
+
+(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where
+ [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *)
+val fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a
+
+(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *)
+val value_of_block : llbasicblock -> llvalue