2014-11-08 4 views
-1

Может ли кто-нибудь помочь мне в увеличении значения переменной, предположительно на 5 в LLVM IR, с помощью пропуска LLVM. Это моя инструкция подарок, который я хочу, чтобы увеличитьПриращение переменной в LLVM IR

%1 = load i32* %k, align 4 
    %inc = add nsw i32 %1, 1 
store i32 %inc, i32* %k, align 4 

вместо 1 в% вкл (добавить) инструкцию, как заменить его на 5.

Я попытался идентифицировать Команда загрузки по

if(LoadInst *ld=dyn_cast<LoadInst>instruction) 

, а затем

Value *Five = ConstantInt::get(Type::getInt32Ty(context), 5); 

, а затем заменить добавить проинструктировали ion по моей новой инструкции

Instruction *in=BinaryOperator::Create(Instruction::Add,ld,Five,"inc",some instruction); 

Я попробовал лить инструкцию ld в значение, но это не сработало.

ответ

1

Пусть I научает итератор это будет выглядеть как

if(I->getOpcode()== Instruction::Add) 
     I->setOperand(1,Val *) 
+0

Спасибо за replying.But не является правильным, как нам нужно значение L. – techcomp

+0

Как насчет I-> setOperand (operandNo, Value *)?. Я использовал что-то подобное не так давно, и это сработало, надеюсь, будет работать и для вас тоже –

+0

О, спасибо. Это сработало!! – techcomp