gpt4 book ai didi

c++11 - C++ 字符串到 LLVM IR

转载 作者:行者123 更新时间:2023-12-01 12:40:06 25 4
gpt4 key购买 nike

我想采用这样的 C++ lambda 函数的字符串表示形式:

string fun = "[](int x) { return x + 5;}";
string llvm_ir = clang.get_llvm_ir(fun); // does something like this exist?

并使用 C++ 中的 Clang 将其转换为 LLVM IR。有没有办法直接使用 Clang 的内部 API 来执行此操作?

最佳答案

据我所知,没有稳定的、官方支持的 API 可以执行此操作。 Clang C API提供前端级信息(源代码级)。 Clang 工具也不提供此功能。

不过您确实有不错的选择。最简单的方法是将 Clang 前端作为子进程调用 clang -cc1 -emit-llvm ...<other options> .这将生成一个 LLVM IR 文件,您可以随后阅读该文件。这在编译器中实际上是相当普遍的做法 - Clang 驱动程序本身执行此操作 - 它调用前端和一堆其他工具(如链接器),具体取决于特定的编译任务。

或者,如果您觉得必须为此提供一个编程 API,您可以深入挖掘 Clang 前端的代码(上面提到的 -cc1 调用),看看它是如何实现的,并收集点点滴滴的代码。不过,请做好编写大量脚手架的准备,因为这些 API 并非设计用于外部使用。

重申一下,可以使用内部 API,但没有简单或推荐的方法遵循此路径。

关于c++11 - C++ 字符串到 LLVM IR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com