我测试clang并编译一个简单的C文件,包括struct asigning。当我看到LLVM代码时,有llvm.memcpy.p0i8.p0i8.i64,来自哪里?我没有看到定义只看到它宣称是一个功能。
它是LLVM内在函数。根据语言参考:
LLVM为一些重要的标准C库函数提供内在函数。这些内在函数允许源语言前端将有关指针参数对齐的信息传递给代码生成器,从而为更高效的代码生成提供了机会。
特别是llvm.memcpy
内在:
'llvm.memcpy。*'内在函数将一块内存从源位置复制到目标位置。
请注意,与标准libc函数不同,llvm.memcpy。*内在函数不返回值,需要额外的isvolatile参数,指针可以在指定的地址空间中。