On 12/4/19 5:43 PM, Marek Polacek wrote:
@@ -2222,12 +2243,24 @@ reduced_constant_expression_p (tree t) return false; if (field) { + retry: if (idx != field) - return false; + { + /* Empty class field may or may not have an initializer. */ + if (is_really_empty_class (TREE_TYPE (field), + /*ignore_vptr*/false)) + { + field = next_initializable_field (DECL_CHAIN (field)); + goto retry; + } + else + return false; + }
I'm not as anti-goto as many people, but it would be shorter to write this as a loop:
for (; idx != field; field = next_initializable_field (DECL_CHAIN (field)) if (!is_really_empty_class (TREE_TYPE (field), false)) return false;
field = next_initializable_field (DECL_CHAIN (field)); } } - if (field) + if (field && !is_really_empty_class (TREE_TYPE (field), + /*ignore_vptr*/false)) return false;
And I think we should loop here, too, in case there's a non-empty field at the end.
Jason