c++: Layout decls with newly-complete type.
authorJason Merrill <jason@redhat.com>
Fri, 4 Sep 2020 16:14:19 +0000 (12:14 -0400)
committerJason Merrill <jason@redhat.com>
Fri, 18 Sep 2020 03:19:59 +0000 (23:19 -0400)
commitf627125855075f7ffde74e48481ee961f0bc4c7b
tree573d2cffbec860f231a7005ce0184d8c4f2d7a7e
parent2aad20c094b9ec47c678b4ca219a7342f4f22376
c++: Layout decls with newly-complete type.

Martin's -Wplacement-new patch ran into a problem with DECL_SIZE not being
set on an extern variable for which the type was not complete until after
its declaration.  complete_vars was deliberately not calling layout_decl for
some reason, instead leaving that for expand_expr_real_1 much later in the
compilation.  But if we layout decls at declaration time, I don't see any
reason we shouldn't lay them out here, when their type is newly complete.

gcc/cp/ChangeLog:

* decl.c (complete_vars): Call layout_var_decl.
gcc/cp/decl.c