------- Additional Comments From kazu at cs dot umass dot edu 2004-10-16 03:46 ------- All the interesting events happen in store_field.
When store_field expands "(<unnamed type>) (unsigned char) v", it generates an AND with 3 because (<unnamed type>) is an anonymous type of two-bit integer. When it expands the assignment, it again generates an AND with 3. It's probably easier to avoid the first AND if we see a narrowing conversion (from 8-bit to 2-bit in this case). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18008