------- Comment #2 from rguenth at gcc dot gnu dot org 2008-12-10 17:44 ------- The relevant path through the CFG is
struct test ctx; <bb 2>: # ctx_108 = VDEF <ctx_103(D)> # SMT.120_109 = VDEF <SMT.120_104(D)> # SMT.121_110 = VDEF <SMT.121_105(D)> # SMT.122_111 = VDEF <SMT.122_106(D)> # SMT.123_112 = VDEF <SMT.123_107(D)> __comp_ctor (&ctx); # VUSE <SMT.121_110> D.10437_5 = ci_1(D)->_M_node; D.10438_6 = (struct _List_node *) D.10437_5; # VUSE <ctx_108> D.10494_9 = ctx.foo._M_t._M_impl._M_header._M_parent; __y_10 = (struct _Rb_tree_node *) D.10494_9; __y_12 = (struct _Rb_tree_node *) &ctx.foo._M_t._M_impl._M_header; ... <bb 7>: # __y_21 = PHI <__y_56(6), __y_12(2)> ... <bb 21>: D.10504_36 = &__y_21->D.9518; ... ... <bb 23>: __x.13_77 = (const struct _Rb_tree_node *) D.10504_36; # VUSE <SMT.123_100> D.11044_78 = D.10438_6->_M_data.pair_ptr; # VUSE <SMT.122_96> D.11045_79 = __x.13_77->_M_value_field.pair_ptr; (it's not clear to me what &__y_21->D.9518 accesses - this seems to be a magic, anonymous thing. The constraints tell me its at offset zero though.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38477