2012-03-23 26 views
6

Các vang 3.0 trực tuyến giới thiệu trang http://llvm.org/demo/index.cgi cung cấp một tùy chọn để đầu ra LLVM C++ API" đại diện cho LLVM-IR cho chương trình đầu vào.Có thể tự động tạo mã llvm C++ api từ LLVM-IR không?

là 'sản xuất LLVM mã C API' đầu ra một lựa chọn ++ kêu vang (và nếu như vậy, nó là gì)?

Hay là một tùy chọn công cụ llvm (cái nào)?

có thể làm điều tương tự nhưng từ đầu vào LLVM-IR? về cơ bản tôi muốn xem các llvm thích c + + api gọi cần thiết để tạo ra một chuỗi cụ thể llvm-ir.Chúng tôi muốn tìm hiểu ngược bằng ví dụ thay vì chuyển tiếp từ tài liệu.

Các trang thủ công và --help và --help-hidden cho clang, llvm-as và llvm-dis không hiển thị bất kỳ điều gì rõ ràng.

chỉnh sửa: OK bây giờ tôi thấy trong đầu ra trên trang web đó, "được tạo bởi llvm2cpp". Nhưng tôi không thể tìm thấy công cụ đó trong bản phát hành llvm gần đây, chỉ các bản phát hành cũ, có công cụ mới trong phiên bản 2.9 và 3.0 được sử dụng cho llvm2cpp?

Trả lời

8

Có. C++ backend là công cụ thực hiện điều này. Hãy thử "llc -march = cpp foo.bc"

+0

cảm ơn. Tôi chỉ tìm thấy trong 2.3 ghi chú phát hành "Công cụ llvm2cpp đã được xếp vào llc, sử dụng llc -march = cpp thay vì llvm2cpp". BTW -march = C++ không hoạt động trong 3.0, nhưng -march = cpp không – Bogatyr

+0

Thật không may lcc -march = cpp không thành công trên các tệp có siêu dữ liệu gỡ lỗi. Bất kỳ cách giải quyết nào được biết đến? Toàn bộ mục đích của tôi là xem C++ apis để thêm siêu dữ liệu gỡ lỗi, vì vậy đây là một showstopper. – Bogatyr

+0

@Bogatyr: điều này nên được coi là một lỗi. Vui lòng điền PR trong LLVM bugzilla với trình tái tạo nhỏ. –

1

Tôi đã gặp sự cố tương tự và thấy CPPBuilder được đề cập một vài lần. Cách tiếp cận này tiếc là không còn hoạt động trên các phiên bản LLVM gần đây vì CPPBackend đã được gỡ bỏ giữa 3,8 và 3,9.

Nếu bạn muốn chương trình phụ trợ CPP, bạn (i) phải định cấu hình llvm và thêm cppbackend vào -DLLVM_TARGETS_TO_BUILD trong cấu hình ban đầu và (ii) chạy llvm < = 3.8.

Tính năng đã bị xóa vì tính năng này không sử dụng IRBuilder và hầu như không ai sử dụng nó. Giải pháp của tôi là dựa vào phiên bản cũ để lấy cảm hứng, sau đó tự mình thực hiện.

Các vấn đề liên quan