我知道store指令用于将数据存储到内存中,但是下面的llvm代码意味着什么?在这里你可以看到很多空的{}结构。
; CHECK: Function: foo:
; CHECK-NEXT: NoAlias: {}* %p, {}* %q
define void @foo({}* %p, {}* %q) {
store {} {}, {}* %p
store {} {}, {}* %q
ret void
}金融时报:https://github.com/llvm-mirror/llvm/blob/master/test/Analysis/CFLAliasAnalysis/Steensgaard/empty.ll
发布于 2018-05-30 14:29:02
这两个中的每一个都存储一个指向RAM的指针。指针指向零字节结构,但这不影响存储指针的操作。
至于为什么,这是测试代码。你知道那个测试员走进酒吧点零啤酒的笑话吗?structs可以包含零字段(有时也包含零字段,例如,当每个字段分别被确定为冗余和优化时),因此编译器需要处理空结构,因此测试包含空结构。
https://stackoverflow.com/questions/50605944
复制相似问题