http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436
--- Comment #44 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-11-14 16:16:35 UTC --- OK, ialloc is because 4.3 folds: oldbit_430 = 0; D.12699_431 = oldbit_430 & 1; D.12698_462 = D.12699_431; D.12095_241 = D.12698_462; if (D.12095_241 != 0) goto <bb 71>; else goto <bb 72>; In mainline the same sequence misses oldbit_430 = 0. static __inline__ int test_and_set_bit_simple(unsigned long nr, volatile void * addr) { unsigned long reg1, reg2; int oldbit; return oldbit & 1; } static __inline__ int test_and_clear_bit_simple(unsigned long nr, volatile void * addr) { unsigned long reg1, reg2; int oldbit; return oldbit & 1; } static __inline__ int test_and_change_bit_simple(unsigned long nr, volatile void * addr) { unsigned long reg1, reg2; int oldbit; return oldbit & 1; } So another source code bug. Richard, do you remember if we dropped initialization by zero for uninitialized vars? I am officially declaring kernel part of CSiBE irrelevant and will look at the other tests. Honza