On February 7, 2014 8:35:16 PM GMT+01:00, Richard Henderson <r...@redhat.com> wrote: >In the testcases with the PR, we have a bit of type punning going on, > > *(int *) &s2.f = 0; > s2 = s1; > >which SRA trasforms to > > # DEBUG s2 => 0 > MEM[(int *)&s2] = 0; > # DEBUG s2 => s1$f_7 > # DEBUG s2$g => s1$g_6 > s2 ={v} {CLOBBER}; > >Note that it has chosen not to expand s1.f like s1.g, but to expand >that field >as the type-punned integer. Which means that "s2 => s1$f_7" has >mismatched >types across lhs and rhs: SI => SF. Which understandibly ICEs during >rtl >expansion. > >I'm not really sure how this is avoided for the actual code generation, >but >this minimal patch (aka hack) simply drops the debug info to avoid the >ICE. > >Thoughts on how this might really be solved?
Add a VIEW_CONVERT_EXPR around the rhs of the debug statement. Richard. > >r~