[Bug c++/95902] New: ICE: tree check: expected tree_list, have ggc_freed in get_attribute_name, at attribs.c:841
p.vanhoof at oma dot be
gcc-bugzilla@gcc.gnu.org
Thu Jun 25 20:43:52 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95902
Bug ID: 95902
Summary: ICE: tree check: expected tree_list, have ggc_freed in
get_attribute_name, at attribs.c:841
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: p.vanhoof at oma dot be
Target Milestone: ---
Created attachment 48786
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48786&action=edit
Code that triggers the ICE
% g++ --version
g++ (GCC) 11.0.0 20200604 (experimental)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
With this compiler, the attached code generates an ICE:
% g++ -g -c bug.cc
bug.cc:53:3: internal compiler error: tree check: expected tree_list, have
ggc_freed in get_attribute_name, at attribs.c:841
53 | } ql;
| ^~
0x7ecec1 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
../../gcc-git/gcc/tree.c:9685
0x6c8201 tree_check(tree_node const*, char const*, int, char const*, tree_code)
../../gcc-git/gcc/tree.h:3552
0x6c8201 get_attribute_name(tree_node const*)
../../gcc-git/gcc/attribs.c:841
0xab8c79 private_lookup_attribute(char const*, unsigned long, tree_node*)
../../gcc-git/gcc/attribs.c:1812
0x932338 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
../../gcc-git/gcc/attribs.h:179
0x93e188 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
../../gcc-git/gcc/cp/decl.c:5231
0x9eae3d cp_parser_init_declarator
../../gcc-git/gcc/cp/parser.c:20817
0x9cc6c2 cp_parser_simple_declaration
../../gcc-git/gcc/cp/parser.c:13785
0x9f5916 cp_parser_declaration
../../gcc-git/gcc/cp/parser.c:13484
0x9f605a cp_parser_translation_unit
../../gcc-git/gcc/cp/parser.c:4761
0x9f605a c_parse_file()
../../gcc-git/gcc/cp/parser.c:44034
0xb0b81b c_common_parse_file()
../../gcc-git/gcc/c-family/c-opts.c:1190
With older g++ versions like 10.1.0, 9.3.0, and 8.4.0 it compiles correctly, so
this seems to be a regression.
Adding -save-temps to the command line makes the ICE go away, so unfortunately
the preprocessed source is not useful... I hope you can reproduce it without
this. The -g flag is essential to trigger the ICE.
More information about the Gcc-bugs
mailing list