http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53224
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-05-04 02:43:22 UTC --- synthesized_method_walk (type, kind, const_p, &raises, &trivial_p, &deleted_p, &constexpr_p, false); /* Don't bother marking a deleted constructor as constexpr. */ if (deleted_p) constexpr_p = false; /* A trivial copy/move constructor is also a constexpr constructor. */ else if (trivial_p && cxx_dialect >= cxx0x && (kind == sfk_copy_constructor || kind == sfk_move_constructor)) gcc_assert (constexpr_p); if (!trivial_p && type_has_trivial_fn (type, kind)) type_set_nontrivial_flag (type, kind); So trivial_p could be used uninitialized only as it is obvious that constexpr_p was set correctly.