一尘不染

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

linux

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

我尝试了以下

clang++ -c -emit-llvm input.cpp -o input.ll
llc -march=cpp -o input.ll.cpp input.ll

这给出了以下错误

llc: error: invalid target 'cpp'.

我正在使用LLVM / Clang 3.2版。


阅读 460

收藏
2020-06-03

共1个答案

一尘不染

构建LLVM时,必须在配置期间启用LLVM C ++后端。
默认情况下,它在configure(自动工具)构建中启用,但在Windows上构建时,在CMake构建中未启用。您可以通过在配置CMake时设置适当的标志来启用它。有关更多信息,请参见此页面

引用:

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

更新

由于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
2020-06-03