2010-04-23 16 views
9

LLVM satır içi bir kütüphaneden fonksiyon yapmaya çalışıyorum.LLVM'yi bir kütüphaneden bir fonksiyona dönüştürün

ben llvm-link ile birbirine bağlanmış (el ile oluşturulan) LLVM bitcode dosyaları var ve ben de (C yazılı) bir kütüphane clang tarafından bitcode derlenmiş ve llvm-ar ile arşivlenmesini. Her şeyi bir araya getirmeyi ve yürütmeyi başarabilirim, ancak kütüphaneden bir işlevi satır içi LLVM elde edemiyorum. Bunun nasıl yapılması gerektiğine dair bir ipucu var mı?

cevap

8

Bitcode dosyalarını kitaplıkla birlikte bağladıktan sonra, bağlı bit kodunda bir Internalize geçişi çalıştırır mısınız? Dahili geçiş, tüm fonksiyonları (main()'un yanı sıra) durağan hale getirir ve optimizer/kod üretecine, bir kopyanın bir (mevcut olmayan) harici referans için kullanılabilir kalmasını sağlamadan, işlevlerin güvenli bir şekilde satır içine alınabileceğini söyler.

llvm-ld ödünç alınan kodu kullanarak bit kod dosyalarımı ve bit kodu kitaplıklarımı manuel olarak bağlarım ve içselleştirme geçişini yapıyorum, ancak llvm-link içselleştirme işleminin başarılı olup olmadığından emin değilim.

+0

Bir çekicilik gibi çalıştığı – capitrane

+0

Bir içselleştirme geçişini nasıl başlatabilirim? – osgx

+0

@osgx: 'createInternalizePass' dosyasına bakın (' lib/Transforms/IPO/Internalize.cpp'). –

İlgili konular