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