Hello,
I am trying to reset the operands of instructions. What I am doing is, I am finding all Uses of a specific operand in an Instruction and resetting it with a new value using “setOperands(int, Value*)”. I am doing as:
for (auto vmitr=vm.begin(), vsitr=vs.begin(); vmitr!=vm.end() && vsitr!=vs.end(); vmitr++, vsitr++){
// I have two *Value ( operands)
for ( auto myitr =(*vsitr)->user_begin(); myitr!=(*vsitr)->user_end(); ++myitr){
// Finding the uses of one operand
for ( int k = 0; k < (*myitr)->getNumOperands(); k++){
// going through the operands of the Instructions that uses it
if ((*myitr)->getOperand(k) == *vsitr){
// Find the operand and its position in the instruction
(*myitr)->setOperand(k,*vmitr);
// Replacing it with the other operand value
}
}
}
The problem is that it goes into the end loop.
ps. *vsitr and *vmitr are arguments of different call instructions but pointing to the same values.
Thanks