On 02/07/2014 03:12 PM, Richard Biener wrote: > 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.
Well, ok, though I'm pretty sure that the debug info will pretty much barf on that immediately. What I really meant is: where's a better place to put this check, since such a check _must_ exist somewhere else for the regular code generation. r~