------- Comment #14 from jakub at gcc dot gnu dot org 2009-05-12 19:06 ------- In *.pre it still looks correct: adaptor.D.166953._vptr.matchable = &_ZTVN5boost9xpressive6detail17xpression_adaptorINS_17reference_wrapperIKNS1_17stacked_xpressionINS1 _16static_xpressionINS1_11end_matcherENS1_7no_nextEEENS5_INS1_21alternate_end_matcherES7_EEEEEENS1_9matchableIN9__gnu_cxx17__normal_itera torIPKcSsEEEEEE[2]; adaptor.xpr_.t_ = D.187226_39; D.187223_40 = &this_1(D)->xpr_.D.142582.alternates_.D.142415.cdr.D.142229.car.D.142156.impl_; D.187198_41 = push_context_match (D.187223_40, state_4(D), &adaptor.D.166953);
and adaptor.D.166953._vptr.matchable = &_ZTVN5boost9xpressive6detail17xpression_adaptorINS_17reference_wrapperIKNS1_17stacked_xpressionINS1 _16static_xpressionINS1_11end_matcherENS1_7no_nextEEENS5_INS1_21alternate_end_matcherES7_EEEEEENS1_9matchableIN9__gnu_cxx17__normal_itera torIPKcSsEEEEEE[2]; adaptor.xpr_.t_ = D.187218_33; D.187221_34 = &this_1(D)->xpr_.D.142582.alternates_.D.142415.car.D.142156.impl_; D.187216_35 = push_context_match (D.187221_34, state_4(D), &adaptor.D.166953); but *.sink already breaks the first push_context_match call: D.187227_38 = &this_1(D)->xpr_.D.142582.alternates_.D.142415.cdr.D.142229.car.next_; D.187226_39 = (const struct stacked_xpression &) D.187227_38; adaptor.D.166953._vptr.matchable = &_ZTVN5boost9xpressive6detail17xpression_adaptorINS_17reference_wrapperIKNS1_17stacked_xpressionINS1 _16static_xpressionINS1_11end_matcherENS1_7no_nextEEENS5_INS1_21alternate_end_matcherES7_EEEEEENS1_9matchableIN9__gnu_cxx17__normal_itera torIPKcSsEEEEEE[2]; adaptor.xpr_.t_ = D.187226_39; D.187223_40 = &this_1(D)->xpr_.D.142582.alternates_.D.142415.cdr.D.142229.car.D.142156.impl_; adaptor.D.166953._vptr.matchable = &_ZTVN5boost9xpressive6detail9matchableIN9__gnu_cxx17__normal_iteratorIPKcSsEEEE[2]; D.187198_41 = push_context_match (D.187223_40, state_4(D), &adaptor.D.166953); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39509