我在LLVM上做一个项目。
我正试图传球:
对于一个功能, 如果参数(参数)是常量, 它将创建一个常量所在的新函数 转换为局部变量, 并从参数中删除。
例如:
void main(){
c=foo(a,b);
d=foo(a,100);
}
double foo(x,y){return x+y;}
将优化为:
void main(){
c=foo(a,b);
d=foo1(a);
}
double foo(x,y){return x+y;}
double foo1(x){
int y=100;
return x+y;
}
为此,我正在尝试创建一个新的局部变量
然后使用replaceAllUsesWith
函数。
但我似乎无法分配新的局部变量。
我确实尝试定义new Value*
但是当我将它分配给参数时,
它变成与参数相同的指针,这使得replaceAllUsesWith
函数无用。
有没有办法在Value*
类型中分配(在内存中)新的局部变量?