将形式参数转换为LLVM中的局部变量

时间:2016-05-06 21:35:07

标签: c++ llvm llvm-clang llvm-ir llvm-gcc

我在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*类型中分配(在内存中)新的局部变量?

0 个答案:

没有答案