2011-03-28 6 views
4

첫 번째 LLVM 샘플을 작성하고 있습니다. 나는 작은 LLVM 모듈을 만들려고 노력하고있다.이 모듈은 함수의 이름을 받아 포인터를 리턴한다. 문제는 LLVM에서 함수 포인터를 생성하는 방법을 모른다는 것입니다. getDeclaration(...)으로 전화하여 Function 개체가 있습니다. 포인터를 얻을 수있는 방법이 있습니까?LLVM에서 함수 포인터 생성

답변

5

함수는 GlobalValue이므로 포인터 자체입니다. 그 동안 LLVM의 C++ 백엔드를 사용하여 LLC에 제공하는 IR을 다시 생성하는 C++ API 호출을 생성 할 수 있습니다.

예를 들어, http://llvm.org/demo에 다음 코드를 공급 : 당신은 "연락처보기 LLVM C++ API 코드"확인란이 선택되어 있는지 확인

void foo(int (*bar)(int)); 

int factorial(int X); 

int main(int argc, char **argv) { 
    foo(factorial); 
} 

을하면 해당 LLVM IR 및 C++ API 호출을 볼 수있는 그것을 다시 만들 것입니다.