通过LLVM中的值加载/存储结构

时间:2019-06-16 19:39:16

标签: struct llvm llvm-ir

我知道clang使用byvalmemcpy分别返回或传递struct参数(如果它们很小,则强制它们)和%struct.X = type { i32, i32, i32, i32 } %struct.Y = type { %struct.X, i32 } define void @foo(%struct.X* noalias sret, %struct.X* byval align 8) 分配/复制它们,如下所示:

define %struct.X @foo(%struct.X align 8) 

我也可以像这样直接通过/返回它们吗?

load

如果我要复制/分配结构怎么办?我可以像使用标量值一样定期使用store / %0 = load %struct.Y, %struct.Y* %a store %struct.Y %0, %struct.Y* %b 吗?

{{1}}

如果是这样,当结构很大时会发生什么? LLVM是否会用完寄存器(因为目标体系结构中的寄存器数量有限)会发生吗?

0 个答案:

没有答案