This merge brings in unit-at-a-time gimplification, so it needed some tweaking. Mostly, it helped to find out some GENERIC that was leaking into the streamer. A pleasant side-effect of the unit-at-a-time gimplification is that not every function is gimplified, so there is less gunk to pickle out (thanks richi!).
Tested on x86_64. There is one extra regression due to thunks. This is something I am fixing shortly, so I let it in because the changes in mainline are significant and the merge brings in other testsuite fixes. New regressions in 00testsuite/20090723/g++.sum.gz: FAIL: g++.dg/lto/20090106 cp_lto_20090106_0.o-cp_lto_20090106_0.o link FAIL: g++.dg/lto/20090106 cp_lto_20090106_0.o-cp_lto_20090106_0.o link Fixed regressions in 00testsuite/20090723/g++.sum.gz: FIXED: g++.dg/lto/pr40818 cp_lto_pr40818_0.o assemble FIXED: g++.dg/lto/pr40818 cp_lto_pr40818_0.o assemble FIXED: g++.dg/lto/pr40818 cp_lto_pr40818_0.o assemble FIXED: g++.dg/lto/pr40818 cp_lto_pr40818_0.o assemble Fixed regressions in 00testsuite/20090723/gcc.sum.gz: FIXED: gcc.dg/Wshadow-3.c (test for warnings FIXED: gcc.dg/Wshadow-3.c (test for excess errors) FIXED: gcc.dg/pr36902.c (test for warnings FIXED: gcc.dg/pr36902.c (test for excess errors) FIXED: gcc.target/x86_64/abi/test_3_element_struct_and_unions.c compilation FIXED: gcc.target/x86_64/abi/test_3_element_struct_and_unions.c compilation FIXED: gcc.target/x86_64/abi/test_3_element_struct_and_unions.c compilation FIXED: gcc.target/x86_64/abi/test_basic_array_size_and_align.c compilation FIXED: gcc.target/x86_64/abi/test_basic_array_size_and_align.c compilation FIXED: gcc.target/x86_64/abi/test_basic_array_size_and_align.c compilation Diego.