On 10 November 2011 20:17, Jason Merrill wrote: > On 11/10/2011 03:10 PM, Jason Merrill wrote: >> >> On 11/10/2011 02:48 PM, Jonathan Wakely wrote: >>> >>> +warn_missing_meminits (tree type, tree cons) >>> +{ >>> + tree mem_inits = sort_mem_initializers (type, NULL_TREE); >>> + while (mem_inits) >>> + { >>> + tree member = TREE_PURPOSE (mem_inits); >>> + /* TODO do not warn if brace-or-equal-initializer */ >>> + warn_meminit_leaves_uninitialized (member, TREE_TYPE (member), cons); >>> + mem_inits = TREE_CHAIN (mem_inits); >>> + } >>> +} >> >> Check DECL_INITIAL (member) to tell if it has an NSDMI. > > Actually, why not just use default_init_uninitialized_part (type)? > >> + if (warn_meminit && (kind == sfk_constructor || kind == >> sfk_copy_constructor >> + || kind == sfk_move_constructor)) >> + warn_missing_meminits (current_class_type, fn); > > We only want to do this for sfk_constructor; the others initialize all > fields.
Doh, of course. Thanks for the pointers, I'll have another stab at it. I really want to get this warning implemented eventually.