How to increment a Global Variable in a LLVM module?

I want to add an instruction at the end of a basic block to increment a
GlobalVariable (using the LLVM C++ library). I am pretty new to to the LLVM,
can I do this directly or does this require loading the global variable,
incrementing it by the desired value and writing back to the global variable
?

Even if I load the variable (with LoadInst constructor), How will the "Add"
instruction know where is the variable ?

For example, look at this IR ocde : %cell_index = load i32* %cell_index_ptr
%new_cell_index = add i32 1, %cell_index

the add instruction knows on which variable to operate (cell_index). But
since I will create the load instruction from the C++ I don't know where the
variable will be created. (I do not operate the IR code directly but using
the C++ it was just for the example

Load it, add it, store it, and then for good measure, plug it, play it, burn it, and rip it. :slight_smile:

You just need to add a store to your IR:
%cell_index = load i32* %cell_index_ptr
%new_cell_index = add i32 1, %cell_index

store i32 %new_cell_index, i32* %cell_index_ptr

Also, this a question for llvm-dev, not cfe-dev.