https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97118
Bug ID: 97118 Summary: [11 Regression] r11-3274 breaks bootstrap Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: jason at redhat dot com Target Milestone: --- On Linux/x86: commit f627125855075f7ffde74e48481ee961f0bc4c7b Author: Jason Merrill <ja...@redhat.com> Date: Fri Sep 4 12:14:19 2020 -0400 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. cause: ../../src-master/gcc/coretypes.h: In instantiation of ??struct kv_pair<optgroup_flag>??: ../../src-master/gcc/dumpfile.c:169:50: required from here ../../src-master/gcc/dumpfile.c:169:33: error: storage size of ??optgroup_options?? isn??t known 169 | const kv_pair<optgroup_flags_t> optgroup_options[] = | ^~~~~~~~~~~~~~~~ ../../src-master/gcc/dumpfile.c: In function ??void dump_loc(dump_flags_t, pretty_printer*, location_t)??: ../../src-master/gcc/dumpfile.c:498:34: warning: spurious trailing space in format [-Wformat-diag] 498 | pp_printf (pp, "%s:%d:%d: ", LOCATION_FILE (loc), | ^ ../../src-master/gcc/dumpfile.c:501:34: warning: spurious trailing space in format [-Wformat-diag] 501 | pp_printf (pp, "%s:%d:%d: ", | ^ ../../src-master/gcc/dumpfile.c:505:26: warning: spurious trailing space in format [-Wformat-diag] 505 | pp_printf (pp, "%s: ", kind_as_string (dump_kind)); | ^ ../../src-master/gcc/dumpfile.c: In member function ??void dump_context::begin_scope(const char*, const dump_user_location_t&, const dump_impl_location_t&)??: ../../src-master/gcc/dumpfile.c:1122:20: warning: spurious leading punctuation sequence ??===?? in format [-Wformat-diag] 1122 | pp_printf (&pp, "=== %s ===\n", name); | ^~~ ../../src-master/gcc/dumpfile.c:1122:27: warning: unquoted sequence of 3 consecutive punctuation characters ??===?? in format [-Wformat-diag] 1122 | pp_printf (&pp, "=== %s ===\n", name);