【发布时间】:2019-01-17 03:17:19
【问题描述】:
我想通过改变控制流。
pass 应该改变if 条件。
假设原始代码如下所示。
int main(int argc, char *argv[])
{
if (atoi(argv[1]) % 2 == 0)
printf("even\n");
else
printf("odd\n");
return 0;
}
应用我的通行证后,代码应更改为以下。 (不是说改变source代码,而是真正的IR代码。)
int main(int argc, char *argv[])
{
if (atoi(argv[1]) % 2 == 1) //the condition of if statement is changed to 1
printf("even\n");
else
printf("odd\n");
return 0;
}
这只是我真正想做的一个玩具示例,但我有困难
- 寻找合适的说明想要改变
- 并更改控制流。
【问题讨论】:
-
要更改指令,您应该在位码级别操作模块,删除旧指令并使用 IRBuilder 添加新指令。你可以在这里查看llvm.org/docs/ProgrammersManual.html#making-simple-changes
标签: llvm llvm-clang llvm-ir