如何使用 Clang 在 C 程序中嵌入 LLVM 程序集或内在函数?
Posted
技术标签:
【中文标题】如何使用 Clang 在 C 程序中嵌入 LLVM 程序集或内在函数?【英文标题】:How to embed LLVM assembly or intrinsics in C program with Clang? 【发布时间】:2013-02-27 13:38:17 【问题描述】:C 编译器允许在 C 程序中嵌入汇编代码。
我很确定 Clang 应该允许在 C 程序中嵌入 LLVM 程序集或内部代码。如何在 C 代码中嵌入 LLVM 程序集?
【问题讨论】:
是的,它应该允许它。不,它还没有这样做,抱歉。 哪些内在函数?如果您只想使用 ARM NEON 内部函数,you can do that without resorting to inline assembly。 @robmayoff 这就是我的意思:llvm.org/docs/LangRef.html#intrinsic-functions @SK-logic 目前还是这样吗? 【参考方案1】:现在你不能。
但是,您可以在自己的文件中单独编写 LLVM 汇编函数,将其标记为 alwaysinline
,然后将其与其余文件一起编译 - 这应该会得到相同的结果。见this related question on how to first compile your C files to IR and then link them together。
你甚至可以单独编译文件并确保你执行link-time optimization (LTO),应该做同样的事情。
【讨论】:
@Jay pass 仍然存在并默认启用:llvm.org/doxygen/AlwaysInliner_8cpp_source.html - 仍然不支持 LLVM IR asm ...以上是关于如何使用 Clang 在 C 程序中嵌入 LLVM 程序集或内在函数?的主要内容,如果未能解决你的问题,请参考以下文章
LLVM 之 Clang 静态分析器篇:程序缺陷诊断——非法读写已释放的内存
LLVM 之 Clang 静态分析器篇:程序缺陷诊断——内存重复释放