Created attachment 45433 [details] Testcase g++-9.0.0-alpha20190113 snapshot (r267906), 8.2, 7.4, 6.3 all ICE when compiling the attached snippet reduced from gcc/testsuite/g++.dg/ext/pr85503.C w/ -fpack-struct -g: % g++-9.0.0-alpha20190113 -fpack-struct -g -c jxdgvov9.cc jxdgvov9.cc: In instantiation of 'class yp<fd<double, 0> >': jxdgvov9.cc:15:7: required from 'class n1<fd<double, 0> >' jxdgvov9.cc:21:7: required from 'class c4<fd<double, 0> >' jxdgvov9.cc:33:7: required from 'class hb<fd<double, 0> >' jxdgvov9.cc:45:7: required from 'class fd<double, 0>' jxdgvov9.cc:52:7: required from 'class dh<dh<fd<double, 0> > >' jxdgvov9.cc:17:22: required from 'class n1<dh<fd<double, 0> > >' jxdgvov9.cc:57:19: required from here jxdgvov9.cc:26:7: error: type variant differs by TYPE_PACKED 26 | class yp | ^~ <record_type 0x7fefa98a3e70 fd packed type_5 type_6 VOID align:8 warn_if_not_align:0 symtab:-1451847200 alias-set -1 canonical-type 0x7fefa98a3e70 context <translation_unit_decl 0x7fefa975a168 jxdgvov9.cc> full-name "class fd<double, 0>" no-binfo use_template=1 interface-unknown chain <type_decl 0x7fefa986fb48 fd>> <record_type 0x7fefa98a3f18 fd readonly type_5 VOID align:8 warn_if_not_align:0 symtab:-1451847120 alias-set -1 canonical-type 0x7fefa98a3f18 context <translation_unit_decl 0x7fefa975a168 jxdgvov9.cc> full-name "const class fd<double, 0>" no-binfo use_template=1 interface-unknown> jxdgvov9.cc:26:7: internal compiler error: verify_type failed 0x127580b verify_type(tree_node const*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/tree.c:14555 0xc022f4 gen_type_die_with_usage /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25449 0xc040e6 gen_type_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25679 0xc1f343 gen_decl_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:26272 0xc227e3 gen_member_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25133 0xc227e3 gen_struct_or_union_type_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25229 0xc1d954 gen_tagged_type_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25430 0xc02845 gen_type_die_with_usage /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25625 0xc040e6 gen_type_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:25679 0xc1e740 gen_decl_die /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:26311 0xc1f9e6 dwarf2out_decl /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:26856 0xc1feb8 dwarf2out_type_decl /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:26583 0xc1feb8 dwarf2out_type_decl /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/dwarf2out.c:26578 0xebfb98 rest_of_type_compilation(tree_node*, int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/passes.c:339 0x8bad7c finish_struct_1(tree_node*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/class.c:7055 0xa0f5d3 instantiate_class_template_1 /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/pt.c:11397 0xa0f5d3 instantiate_class_template(tree_node*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/pt.c:11436 0xa565fd complete_type(tree_node*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/typeck.c:138 0xa5673b complete_type(tree_node*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/typeck.c:119 0xa5673b complete_type_or_maybe_complain(tree_node*, tree_node*, int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190113/work/gcc-9-20190113/gcc/cp/typeck.c:150
Author: msebor Date: Fri Feb 22 17:38:11 2019 New Revision: 269125 URL: https://gcc.gnu.org/viewcvs?rev=269125&root=gcc&view=rev Log: PR tree-optimization/88993 - GCC 9 -Wformat-overflow=2 should reflect real libc limits PR tree-optimization/88835 - overly aggressive -Werror=format-overflow for printf gcc/ChangeLog: PR tree-optimization/88993 PR tree-optimization/88853 * gimple-ssa-sprintf.c (sprintf_dom_walker::call_info::is_file_func): New helper. (sprintf_dom_walker::call_info::is_string_func): New helper. (format_directive): Only issue "may exceed" 4095/INT_MAX warnings for formatted string functions. (sprintf_dom_walker::handle_gimple_call): Fix a typo in a comment. gcc/testsuite/ChangeLog: PR tree-optimization/88993 PR tree-optimization/88853 * gcc.dg/tree-ssa/builtin-fprintf-warn-2.c: New test. * gcc.dg/tree-ssa/builtin-printf-warn-2.c: New test. * gcc.dg/tree-ssa/builtin-snprintf-warn-3.c: Adjust. * gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-warn-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-warn-2.c Modified: trunk/gcc/gimple-ssa-sprintf.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-18.c
Please ignore comment #1 -- wrong bug id in the commit.
Confirmed with gcc version 10.0.0 20190620 (experimental) (GCC): 88853.C: In instantiation of ‘class yp<fd<double, 0> >’: 88853.C:15:7: required from ‘class n1<fd<double, 0> >’ 88853.C:21:7: required from ‘class c4<fd<double, 0> >’ 88853.C:33:7: required from ‘class hb<fd<double, 0> >’ 88853.C:45:7: required from ‘class fd<double, 0>’ 88853.C:52:7: required from ‘class dh<dh<fd<double, 0> > >’ 88853.C:17:22: required from ‘class n1<dh<fd<double, 0> > >’ 88853.C:57:19: required from here 88853.C:26:7: error: type variant differs by TYPE_PACKED 26 | class yp | ^~ <record_type 0x7ff011706498 fd packed type_5 type_6 VOID align:8 warn_if_not_align:0 symtab:291254432 alias-set -1 canonical-type 0x7ff011706498 context <translation_unit_decl 0x7ff0115a5168 88853.C> full-name "class fd<double, 0>" no-binfo use_template=1 interface-unknown chain <type_decl 0x7ff0116bdbe0 fd>> <record_type 0x7ff011706540 fd readonly type_5 VOID align:8 warn_if_not_align:0 symtab:291254512 alias-set -1 canonical-type 0x7ff011706540 context <translation_unit_decl 0x7ff0115a5168 88853.C> full-name "const class fd<double, 0>" no-binfo use_template=1 interface-unknown> 88853.C:26:7: internal compiler error: ‘verify_type’ failed 0x182ff70 verify_type(tree_node const*) /home/mpolacek/src/gcc/gcc/tree.c:14650 0xe2127e gen_type_die_with_usage /home/mpolacek/src/gcc/gcc/dwarf2out.c:25557 0xe21eb1 gen_type_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:25787 0xe23b4c gen_decl_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:26380 0xe1fffc gen_member_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:25241 0xe20749 gen_struct_or_union_type_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:25337 0xe21211 gen_tagged_type_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:25538 0xe21b2b gen_type_die_with_usage /home/mpolacek/src/gcc/gcc/dwarf2out.c:25733 0xe21eb1 gen_type_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:25787 0xe23df2 gen_decl_die /home/mpolacek/src/gcc/gcc/dwarf2out.c:26419 0xe252ee dwarf2out_decl /home/mpolacek/src/gcc/gcc/dwarf2out.c:26964 0xe24772 dwarf2out_type_decl /home/mpolacek/src/gcc/gcc/dwarf2out.c:26691 0x127930d rest_of_type_compilation(tree_node*, int) /home/mpolacek/src/gcc/gcc/passes.c:339 0x8a57a6 finish_struct_1(tree_node*) /home/mpolacek/src/gcc/gcc/cp/class.c:7091 0xab7d6c instantiate_class_template_1 /home/mpolacek/src/gcc/gcc/cp/pt.c:11495 0xab7ee2 instantiate_class_template(tree_node*) /home/mpolacek/src/gcc/gcc/cp/pt.c:11534 0xb845c2 complete_type(tree_node*) /home/mpolacek/src/gcc/gcc/cp/typeck.c:139 0xb845e7 complete_type_or_maybe_complain(tree_node*, tree_node*, int) /home/mpolacek/src/gcc/gcc/cp/typeck.c:151 0xb84685 complete_type_or_else(tree_node*, tree_node*) /home/mpolacek/src/gcc/gcc/cp/typeck.c:168 0x94ccfd xref_basetypes(tree_node*, tree_node*) /home/mpolacek/src/gcc/gcc/cp/decl.c:14310 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.
I get something similar for this C code: enum fmt_type parse_num_range(const enum fmt_type); enum __attribute__((packed)) fmt_type { FMT_NUMBER_OF_FORMATS } parse_number(const enum fmt_type) {} $ /usr/bin/gcc -c -g bug877.c $ ~/gcc/results/bin/gcc -c -g bug877.c bug877.c: In function ‘parse_number’: bug877.c:4:27: error: type variant differs by TYPE_PACKED 4 | } parse_number(const enum fmt_type) {} | ^~~~~~~~ <enumeral_type 0x7fc8f09b4348 fmt_type type <integer_type 0x7fc8f0821348 unsigned char public unsigned QI size <integer_cst 0x7fc8f0802e88 constant 8> This error seems like a regression in gcc-13. The bug first appears sometime before 9b111debbfb79a0a.