Matthias Klose did an archive rebuild of Ubuntu with GCC 6 recently [1]. He wanted to file bugs in Debian and so I offered to do a build of Debian unstable. This was done with GCC 6 20160117 as packaged for Debian by Matthias. I built 11,500 Debian packages.
I ran into the following compiler errors: * ICE in fold_convert_loc, at fold-const.c:2366 (PR69379): new, fix available * ICE in dwarf2out_finish, at dwarf2out.c:27175 (PR69393): new, outstanding * ICE in get_initial_def_for_reduction, at tree-vect-loop.c:4196 (PR69166): reported by Matthias, outstanding * ICE in assign_temp, at function.c:961 (PR69241): known, outstanding * Wrong code generation at -O2 and higher (PR69320): known, fixed Afterwards, I took all packages that compiled successfully with GCC 6 and compiled them with dpkg-buildflags set to -O3 (note that not every package uses flags from dpkg-buildflags but many do). I ran into the following compiler errors: * ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1379 (PR69328): known, fixed * ICE in rewrite_use_nonlinear_expr, at tree-ssa-loop-ivopts.c:7086 (PR68021): known, outstanding * ICE in maybe_legitimize_operand, at optabs.c:6888 (PR69421): new, outstanding This was done on x86_64. I'd also like to do an archive build on arm64. I'm impressed by the speed the GCC developers have been looking at these bugs! In terms of build failures, I reported 520 bugs to Debian. Most of them were new GCC errors or warnings (some packages use -Werror and many -Werror=format-security). Here are some of the most frequent errors see: * 77: error: narrowing conversion of '128' from 'int' to 'char' inside { } [-Wnarrowing] * 73: error: no match for or error: no matching function for call to * 65: error: cannot convert 'bool' to '...' in return error: cannot convert 'std::basic_istream<char>' to 'bool' in initialization error: could not convert 'false' from 'bool' to '...' * 36: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation] * 16: error: 'xxx' defined but not used [-Werror=unused-const-variable] * 16: error: reference to '...' is ambiguous * 13: test suite failures (segfaults and similar); not clear if the package or if GCC is at fault. * 12: error: enumerator value for '...' is not an integer constant expression [-Wpedantic] * 12: error: call of overloaded ... is ambiguous * 9: 'xxx' needed for in-class initialization of static data member * 9: error: '...' was not declared in this scope * 8: error: unknown type name * 8: error: unable to find string literal operator * 8: cmake failure (cmake configure scripts fail) * 6: error: macro "..." passed 2 arguments, but takes just 1 * 3: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix] * 3: error: template argument X is invalid [1] https://gcc.gnu.org/ml/gcc/2016-01/msg00101.html -- Martin Michlmayr Linux for HPE Helion, Hewlett Packard Enterprise