作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
表达式 &ptr->fld
不代表取消引用,而是应将其视为 (uint32_t)ptr + offsetof (ptr, fld)
.我确信 GCC 做了这种简化,但我找不到代码中的位置。
以上结果为 ADDR_EXPR(COMPONENT_REF (INDIRECT_REF (ptr), fld))
在 AST 中,但在某些时候它应该通过并简化它。在 gcc 树中查找了几乎所有出现的 ADDR_EXPR、COMPONENT_REF 和 INDIRECT_REF 后,我很难发现在哪里。有任何想法吗?
请注意,我曾尝试向 GCC 人员寻求帮助。一般来说,它们非常无用,但这里的人可能知道答案。如果这是一个不好的问题,我会理解它是否已关闭。
最佳答案
由于您已经熟悉 GCC 的 AST,因此找出答案的一种方法是使用 gcc -fdump-tree-all -fdump-rtl-all
生成所有树和 RTL 转储文件。然后通过它们进行二分搜索以定位进行转换的 channel 。
关于GCC 内部结构 : Where are fake dereferences removed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086808/
我是一名优秀的程序员,十分优秀!