2012-03-23 8 views
6

बजना 3.0 ऑनलाइन डेमो पृष्ठ http://llvm.org/demo/index.cgi और उत्पादन LLVM सी ++ एपीआई कोड "उत्पादन एक बजना विकल्प उत्पादन LLVM सी ++ एपीआई कोड के लिए एक विकल्प प्रदान करता है" है इनपुट कार्यक्रम के लिए LLVM-आईआर का प्रतिनिधित्व।LLVM-IR से llvm C++ api कोड स्वतः उत्पन्न करने के लिए संभव है?

"(यदि हां, तो यह क्या है)?

या यह एक LLVM उपकरण विकल्प (जो एक) है?

यह संभव ही बात लेकिन LLVM-आईआर इनपुट से करना है? असल में मैं उचित LLVM देखना चाहते हैं है सी ++ एपीआई कॉल को एक विशेष दिए गए एलएलवीएम-आईआर अनुक्रम का उत्पादन करने के लिए आवश्यक है। मैं प्रलेखन से आगे की बजाय उदाहरण के आधार पर सीखना चाहता हूं।

मैनुअल पेज और --help और --help-clang के लिए छिपे हुए, llvm-as और llvm-dis कुछ भी स्पष्ट नहीं दिखाते हैं।

संपादित करें: ठीक है अब मैं उस वेब पेज पर आउटपुट में देखता हूं, "llvm2cpp द्वारा उत्पन्न"। लेकिन मुझे हाल ही में llvm रिलीज़ में, उस पुरानी रिलीज में उस उपकरण को नहीं मिला है, इसमें 2.9 और 3.0 में एक नया टूल llvm2cpp के लिए लिया गया है?

उत्तर

8

हां। सी ++ बैकएंड वह टूल है जो यह करता है। "Llc -march = cpp foo.bc"

+0

धन्यवाद। मुझे अभी 2.3 रिलीज नोट्स में मिला है "llvm2cpp टूल को llc में जोड़ा गया है, llvm2cpp के बजाय llc -march = cpp का उपयोग करें"। बीटीडब्लू-मार्च = सी ++ 3.0 में काम नहीं करता है, लेकिन-मार्च = सीपीपी – Bogatyr

+0

दुर्भाग्यवश lcc -march = cpp डीबग मेटाडेटा वाली फ़ाइलों पर विफल रहता है। उस के लिए कोई ज्ञात कामकाज? मेरा पूरा उद्देश्य डीबग मेटाडेटा जोड़ने के लिए सी ++ एपिस देखना था, इसलिए यह एक शोस्टॉपर है। – Bogatyr

+0

@ बोगेटिर: इसे एक बग माना जाना चाहिए। छोटे प्रजनन के साथ एलएलवीएम बगजिला में पीआर भरने के लिए स्वतंत्र महसूस करें। –

1

मैं बिल्कुल वही समस्या में भाग गया और सीपीपीबिल्डर ने दो बार उल्लेख किया। दुर्भाग्य से यह दृष्टिकोण हाल ही में एलएलवीएम संस्करणों पर काम नहीं करता है क्योंकि सीपीपी बैकएंड को 3.8 और 3.9 के बीच हटा दिया गया था।

अगर आप चाहते हैं सीपीपी बैकएंड आप (i) LLVM कॉन्फ़िगर और प्रारंभिक कॉन्फ़िगर और (ii) एक LLVM < = 3.8 चलाने के दौरान -DLLVM_TARGETS_TO_BUILD को cppbackend जोड़ने के लिए।

सुविधा हटा दी गई थी क्योंकि उसने आईआरबिल्डर का उपयोग नहीं किया था और लगभग किसी ने इसका इस्तेमाल नहीं किया था। मेरा समाधान प्रेरित होने के लिए पुराने संस्करण पर भरोसा करना था, फिर इसे स्वयं लागू करें।

संबंधित मुद्दे