我测试了clang并编译了一个包含struct asigning的简单C文件。当我看到LLVM代码时,有llvm.memcpy.p0i8.p0i8.i64,这是哪里来的?我没有看到这种定义,只是看到它的声明是一种功能。
答案 0 :(得分:1)
它是LLVM固有函数。根据语言参考:
LLVM提供了一些重要的标准C库的内在函数 功能。这些内在函数允许源语言前端通过 有关指针参数与代码对齐的信息 生成器,为更高效的代码生成提供了机会。
llvm.memcpy
内部特有的内容:
“ llvm.memcpy。*”内在函数从源代码复制了一块内存 位置到目标位置。
请注意,与标准libc函数不同,llvm.memcpy。* 内部函数不返回值,需要额外的isvolatile参数,并且 指针可以位于指定的地址空间中。