2010-04-23 6 views
9

라이브러리에서 LLVM 인라인 함수를 만들려고합니다.라이브러리에서 LLVM 인라인 함수로 만듭니다.

llvm-link과 함께 링크 된 LLVM 비트 코드 파일 (수동으로 생성 됨)과 clang에 의해 비트 코드로 컴파일되고 llvm-ar과 함께 보관되는 라이브러리 (C로 작성된 라이브러리)가 있습니다. 모든 것을 함께 연결하고 실행할 수는 있지만, 라이브러리에서 함수 LLVM을 인라인 할 수는 없습니다. 어떻게해야하는지에 대한 단서가 있습니까?

답변

8

라이브러리와 함께 비트 코드 파일을 연결 한 후에는 링크 된 비트 코드에 내부화 단계를 실행합니까? 내부화 패스는 모든 함수 (main() 외)를 정적으로 만들고 일부 (존재하지 않는) 외부 참조에 대해 사본을 유지하지 않고 함수를 안전하게 인라인 할 수 있다고 옵티 마이저/코드 생성기에 알립니다.

llvm-ld에서 빌려온 코드를 사용하여 수동으로 내 비트 코드 파일과 비트 코드 라이브러리를 연결하고 내부화 패스를 수행하지만 llvm-link이 내부화 통과를하는지 확실하지 않습니다.

+0

매력처럼 작용했습니다 – capitrane

+0

어떻게 내면화 통과를 시작할 수 있습니까? – osgx

+0

@osgx :'createInternalizePass' ('lib/Transforms/IPO/Internalize.cpp')를보십시오. –