'的含义;存储{}{},{}*%p';在llvm ir中?

'的含义;存储{}{},{}*%p';在llvm ir中?,llvm,llvm-ir,Llvm,Llvm Ir,我知道store指令用于将数据存储到内存中,但是下面的llvm ir代码是什么意思?在这里你可以看到很多空的“{}”结构 ; CHECK: Function: foo: ; CHECK-NEXT: NoAlias: {}* %p, {}* %q define void @foo({}* %p, {}* %q) { store {} {}, {}* %p store {} {}, {}* %q ret void } 仅供参考:这两种方法都将指针存储到RAM中。指针指向

我知道
store
指令用于将数据存储到内存中,但是下面的llvm ir代码是什么意思?在这里你可以看到很多空的“{}”结构

; CHECK:      Function: foo:
; CHECK-NEXT:   NoAlias: {}* %p, {}* %q

define void @foo({}* %p, {}* %q) {
  store {} {}, {}* %p
  store {} {}, {}* %q
  ret void
}

仅供参考:

这两种方法都将指针存储到RAM中。指针指向零字节结构,但这并不影响存储指针的操作


至于原因,这是测试代码。你知道一个关于测试人员走进酒吧点零啤酒的笑话吗?结构可以包含零个字段(有时也可以,例如,当每个字段都被单独确定为冗余并经过优化时),因此编译器需要处理空结构,因此测试包含空结构。

这两个字段中的每一个都将指针存储到RAM中。指针指向零字节结构,但这并不影响存储指针的操作

至于原因,这是测试代码。你知道一个关于测试人员走进酒吧点零啤酒的笑话吗?结构可以包含零个字段(有时也可以,例如,当每个字段都被单独确定为冗余并经过优化时),因此编译器需要处理空结构,因此测试包含空结构