2012-03-23 3 views
6

는 그 소리 3.0 온라인 데모 페이지에 http://llvm.org/demo/index.cgi는 LLVM C++ API 코드 "를 출력 연타 옵션을 생산"입니다.LLVM-IR에서 llvm C++ API 코드를 자동 생성 할 수 있습니까?

를 입력 프로그램의 LLVM-IR을 나타내는 "출력 LLVM C++ API 코드에 대한 옵션을 제공합니다 (만약 그렇다면, ?)

그것은 무엇인가 아니면 (어느)는 LLVM 도구 옵션입니까?

이 가능 같은 일을하지만, LLVM-IR 입력에서 할? 기본적으로 내가 적절한 LLVM을보고 싶습니다인가 특정 주어진 llvm-ir 시퀀스를 생성하는 데 필요한 C++ API 호출. 문서에서 전달하는 것이 아니라 예제를 통해 거꾸로 배우고 싶습니다.

매뉴얼 페이지와 clang, llvm-as 및 llvm-dis에 대한 --help 및 --help-hidden은 아무 것도 보여주지 않습니다.

편집 : 이제 확인을 클릭하십시오. "llvm2cpp에 의해 생성 된"해당 웹 페이지의 출력. 그러나 최근의 llvm 릴리즈에서이 도구를 찾을 수는 없으며, 오직 오래된 릴리즈에만 llvm2cpp에 대한 2.9와 3.0의 새로운 도구가 추가 되었습니까?

답변

8

예. C++ 백엔드가이를 수행하는 도구입니다. "llc -march = cpp foo.bc"를 시도하십시오.

+0

감사합니다. 2.3 릴리즈 노트에서 "llvm2cpp 도구가 llc로 접혀졌고 llcmarch 대신 llc -march = cpp를 사용했습니다"라고 알았습니다. BTW -march = C++은 3.0에서는 작동하지 않지만 -march = cpp는 – Bogatyr

+0

을 실행합니다. 불행히도 디버그 메타 데이터가있는 파일에서는 lcc -march = cpp가 실패합니다. 그 알려진 해결 방법은 무엇입니까? 내 모든 목적은 디버그 메타 데이터를 추가하기위한 C++ api를 보는 것이 었습니다. – Bogatyr

+0

@Bogatyr : 이것은 버그로 간주되어야합니다. 작은 재생기로 LLVM bugzilla에서 홍보물을 작성해보십시오. –

1

정확하게 동일한 문제가 발생하여 CPPBuilder에서 몇 번 언급했습니다. CPPBackend가 3.8과 3.9 사이에서 제거되었으므로이 방법은 불행히도 최근 LLVM 버전에서 더 이상 작동하지 않습니다.

CPP 백엔드를 원한다면 (i) 초기 구성 중에 llvm을 구성하고 cppbackend를 -DLLVM_TARGETS_TO_BUILD에 추가하고 (ii) llvm < = 3.8을 실행해야합니다.

IRBuilder를 사용하지 않았고 거의 아무도 사용하지 않아 기능이 제거되었습니다. 내 솔루션은 영감을 얻기 위해 이전 버전에 의존 한 다음 직접 구현합니다.