2012-03-23 18 views
6

clang 3.0 çevrimiçi demo sayfası http://llvm.org/demo/index.cgi LLVM C++ API kodu "çıkışı clang seçeneği üretmek "mi.LLVM-IR'dan otomatik olarak llvm C++ api kodu üretilebiliyor mu?

giriş programı için LLVM-IR ifade eden" çıkışı LLVM C++ API kodunun için bir seçenek sunar (ve eğer öyleyse, ?)

bu nedir Yoksa (hangisi) bir LLVM aracı seçenektir?

mümkün aynı şeyi ama LLVM-IR girişten yapmalı? Temelde düzgün LLVM görmek istiyorum mı Belirli bir llvm-ir dizisini üretmek için gereken C++ api çağrıları, dokümantasyondan ileriye doğru tersine, örneklerle geriye doğru öğrenmek istiyorum.

El ile yazılmış sayfalar ve clang, llvm-as ve llvm-dis için kullanılabilecek ve --help gizlenmiş hiçbir şey gösterilmiyor.

düzenleme: Tamam şimdi bu web sayfasındaki çıktıda görüyorum, "llvm2cpp tarafından oluşturulan". Ancak bu aracı, son sürümlerinde, sadece eski sürümlerde, 2.9 ve 3.0'da yeni bir araç olan llvm2cpp için yeni bir araç bulamıyorum.

cevap

8

Evet. C++ arka uç, bunu yapan bir araçtır. "Llc -march = cpp foo.bc"

+0

teşekkürler. Ben sadece 2.3 sürüm notlarında buldum "llvm2cpp aracı llc katlanmış, llvm2cpp yerine llc -march = cpp kullanın". BTW -march = C++, 3.0'da çalışmaz, ancak -march = cpp – Bogatyr

+0

yapar Ne yazık ki lcc -march = cpp hata ayıklama meta verileri içeren dosyalarda başarısız olur. Bunun bilinen bir çözümü var mı? Tüm amacım debug meta verilerini eklemek için C++ apis'i görmekti, bu yüzden bu bir showtopper. – Bogatyr

+0

@Bogatyr: Bu bir hata olarak görülmelidir. Küçük reproducer ile LLVM bugzilla'da bir PR doldurmaktan çekinmeyin. –

1

Tam olarak aynı soruna rastladım ve CPPBuilder'in birkaç kez bahsettiğini gördüm. Bu yaklaşım maalesef henüz CPPBackend 3.8 ve 3.9 arasında kaldırıldığı için yeni LLVM sürümlerinde çalışmaz.

CPP'nin arka tarafını geri yüklemek isterseniz (i) ilk yapılandırma sırasında -vtvM_TARGETS_TO_BUILD'ye llvm'yi yapılandırmalı ve cppbackend'i ekleyiniz ve (ii) bir lvv < = 3.8 çalıştırın.

Bu özellik IRBuilder kullanmadığından ve neredeyse hiç kimse kullanmadığından kaldırıldı. Benim çözümüm, ilham almak için eski versiyona güvenmekti, sonra bunu kendim gerçekleştirdim.

İlgili konular