------- Comment #24 from aoliva at gcc dot gnu dot org 2008-06-26 00:33 ------- It's not just the result type that changed. You actually changed the type of the variable created to hold the group of bit fields, out of which we further extract members that were not mapped to separate variables. This might affect bitfield simplifications based on mode size rather than type width. I can't say that's it, but I know I may have based some code on this assumption that you broke.
It also seems to me that this change to the base type of the variable breaks sra_build_elt_assignment(), because the by-design conditions might no longer be met. Finally, I don't see how you could assume that the else block for the if full-width bit-field could be extracted with as little as a cast. This is what jumped at me at first. I haven't actually built compilers based on the state before and after your patch to tell whether that's it, but these are the most likely culprits. I hope this helps, -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35518