首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“存储{} {},{}* %p”在llvm-ir中的意思是?

“存储{} {},{}* %p”在llvm-ir中的意思是?
EN

Stack Overflow用户
提问于 2018-05-30 13:26:57
回答 1查看 267关注 0票数 0

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

代码语言:javascript
复制
; 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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 14:29:02

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

至于为什么,这是测试代码。你知道那个测试员走进酒吧点零啤酒的笑话吗?structs可以包含零字段(有时也包含零字段,例如,当每个字段分别被确定为冗余和优化时),因此编译器需要处理空结构,因此测试包含空结构。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50605944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档