海湾合作委员会内部人员:虚假的解除引用在哪里删除?

时间:2010-01-18 14:53:43

标签: gcc internals

表达式&ptr->fld不代表取消引用,而应将其视为(uint32_t)ptr + offsetof (ptr, fld)。我确信GCC会进行这种简化,但我找不到代码中的位置。

以上结果在AST中以ADDR_EXPR(COMPONENT_REF (INDIRECT_REF (ptr), fld))结束,但在某些时候它应该通过并简化它。在gcc树中查找几乎每次出现的ADDR_EXPR,COMPONENT_REF和INDIRECT_REF时,我都无法找到位置。有什么想法吗?

请注意,我试过寻求GCC人员的帮助。一般来说,他们都没有帮助,但这里的人可能知道答案。如果这是一个糟糕的问题,我会理解它是否已关闭。

1 个答案:

答案 0 :(得分:1)

由于您已经熟悉GCC的AST,因此找到的方法之一是使用gcc -fdump-tree-all -fdump-rtl-all生成所有树和RTL转储,然后通过它们进行二进制搜索以本地化进行转换的传递。