式&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 の人々に助けを求めようとしたことに注意してください。一般的に、それらはかなり役に立ちませんが、ここにいる人々は答えを知っているかもしれません. これが悪い質問である場合、それが閉じられているかどうかはわかります。