преобразовать формальный аргумент в локальную переменную в LLVM

Я делаю проект на 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*?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]