我知道该store指令用于将数据存储到内存中,但下面的llvm-ir代码是什么意思?你可以在这里看到很多空的"{}"结构.
; CHECK:      Function: foo:
; CHECK-NEXT:   NoAlias: {}* %p, {}* %q
define void @foo({}* %p, {}* %q) {
  store {} {}, {}* %p
  store {} {}, {}* %q
  ret void
}
Run Code Online (Sandbox Code Playgroud)
仅供参考:https://github.com/llvm-mirror/llvm/blob/master/test/Analysis/CFLAliasAnalysis/Steensgaard/empty.ll
这两个中的每一个都存储指向RAM的指针.指针指向零字节结构,但这不会影响存储指针的操作.
至于为什么,这是测试代码.你知道关于那个走进酒吧并订购零啤酒的测试人员的笑话吗?结构可以包含零个域(有时做,例如,当每一个场已经分别确定为冗余和优化掉),因此,编译器需要处理空结构,并因此测试包含空结构.