生成LLVM C++ API代码作为后端

Met*_*est 14 c++ linux x86-64 llvm

在线LLVM演示页面有一个选项生成LLVM C++ API代码从一个源代码后端.但是,该演示页面现已禁用.我想知道我们如何使用可用的LLVM工具自己完成它.

我尝试了以下内容

clang++ -c -emit-llvm input.cpp -o input.ll
llc -march=cpp -o input.ll.cpp input.ll
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误

llc: error: invalid target 'cpp'.
Run Code Online (Sandbox Code Playgroud)

我使用的是LLVM/Clang 3.2版.

Eli*_*sky 7

构建LLVM时,必须在配置期间启用LLVM C++后端.它在configure(autotools)构建中默认启用,但在Windows上构建时不在CMake构建中启用.您可以通过在配置CMake时设置适当的标志来启用它.有关更多信息,请参阅此页面.

引用:

LLVM_TARGETS_TO_BUILD:STRING以 分号分隔的要构建的目标列表,或全部用于构建所有目标的目标.区分大小写.对于Visual C++,默认为X86.在其他情况下,默认为全部.示例:-DLLVM_TARGETS_TO_BUILD ="X86; PowerPC".

UPDATE

由于version 3.9CppBackend不再是一个有效的目标.他们已从代码中删除,因为生成的代码提出了一些问题.

检查此提交

Remove bit-rotten CppBackend.

This backend was supposed to generate C++ code which will re-construct
the LLVM IR passed as input. This seems to me to have very marginal
usefulness in the first place.

However, the code has never been updated to use IRBuilder, which makes
its current value negative -- people who look at the output may be
steered to use the *wrong* C++ APIs to construct IR.

Furthermore, it's generated code that doesn't compile since at least
2013.

Differential Revision: http://reviews.llvm.org/D19942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268631 91177308-0d34-0410-b5e6-96231b3b80d8
Run Code Online (Sandbox Code Playgroud)