------- Comment #13 from danglin at gcc dot gnu dot org 2008-06-22 20:44 ------- retmeK (struct K x) { <unnamed-unsigned:10> SR.14; <unnamed-unsigned:15> SR.13; <unnamed-unsigned:7> SR.12; <unnamed-unsigned:10> SR.11; <unnamed-unsigned:15> SR.10; <unnamed-unsigned:15> x$i; <unnamed-unsigned:10> x$j; <unnamed-unsigned:7> x$B0F7; struct K D.1258;
<bb 2>: x$B0F7_1 = 0; x$j_2 = 0; x$i_3 = 0; SR.13_4 = x.i; x$i_5 = SR.13_4; SR.14_6 = x.j; x$j_7 = SR.14_6; x$B0F7_8 = BIT_FIELD_REF <x, 7, 0>; D.1258.i ={v} x$i_5; D.1258.j ={v} x$j_7; SR.12_9 = x$B0F7_8 >> 1; BIT_FIELD_REF <D.1258, 7, 0> ={v} SR.12_9; return D.1258; } Don't understand... At -O0, we just have retmeK (struct K x) { struct K D.1260; <bb 2>: D.1260 = x; return D.1260; } and it works. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35518