removePredecessor() and update predecessor list

Hi all,

    for(pred_iterator PI=pred_begin(BB); PI!=pred_end(BB); PI++)
  {
    BasicBlock *Pres = *PI;
    pred.insert(Pres);
  }
for(predit = pred.begin(); predit!=pred.end();predit++)
  (BB)->removePredecessor(*predit);

Is this code enough to remove the predecessor for each basic block As I read in documentation that this removePredecessor() doesn’t update the predecessor list.

So, how could I update the predecessor list ?

Is it also by changing the terminator instruction of the predecessor?

Thanks