我需要LLVM在特定区域为我更新一些指针。假设我可以使用pragma为这些区域的编译器提供附加信息。在生成输出(共享对象/可执行文件)时,LLVM可以将以下逻辑修改为第二个片段吗?
原始摘录:
char A[100];
....
char B[100];
.....
#pragma CHANGE_A_TO_B
A[1] = 1;
A[100] = 100;
输出应该等于
的逻辑char A[100];
....
char B[100];
.....
/* LLVM must copy the contents and update pointers of A to B */
strcpy(B,A);
B[1] = 1;
B[100] = 100;
答案 0 :(得分:0)
可以吗? 是可以做到。
你将被取代
%store i32 1, %A
或类似的一些bitcast版本
%store i32 1, %B
查看一些基本的llvm传递来更改和创建IR指令。
如果依赖项并不复杂,你可以使用一些脚本(perl或其他东西)来替换正则表达式。