https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79653
Bug ID: 79653 Summary: ICE on invalid c++ code in cp_check_const_attributes in cp/decl2.c:1423 Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org Target Milestone: --- Created attachment 40791 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40791&action=edit test-case Adopted from clang: $ g++ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp:3:28: error: requested alignment is not a positive power of 2 int align_illegal alignas(3); //expected-error {{requested alignment is not a power of 2}} ^ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp:11:25: error: function definition does not declare parameters int bitfield alignas(1) : 1; // expected-error {{}} ^ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp:14:24: error: alignment may not be specified for ‘c’ void f(alignas(1) char c) { // expected-error {{'alignas' attribute cannot be applied to a function parameter}} ^ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp:26:19: error: expansion pattern ‘#‘tree_list’ not supported by dump_expr#<expression error>’ contains no argument packs struct alignas(int...) alignas_expansion_no_packs {}; // expected-error {{pack expansion does not contain any unexpanded parameter packs}} ^~~ /home/marxin/BIG/Programming/llvm-project/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp:26:24: internal compiler error: tree check: expected tree_list, have error_mark in cp_check_const_attributes, at cp/decl2.c:1351 struct alignas(int...) alignas_expansion_no_packs {}; // expected-error {{pack expansion does not contain any unexpanded parameter packs}} ^~~~~~~~~~~~~~~~~~~~~~~~~~ 0x15410ca tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/tree.c:9815 0x80d4d6 tree_check(tree_node*, char const*, int, char const*, tree_code) ../../gcc/tree.h:3064 0x95cfd7 cp_check_const_attributes ../../gcc/cp/decl2.c:1351 0x95d5ce cplus_decl_attributes(tree_node**, tree_node*, int) ../../gcc/cp/decl2.c:1423 0x9b04ca cp_parser_class_head ../../gcc/cp/parser.c:22805 0x9ae06f cp_parser_class_specifier_1 ../../gcc/cp/parser.c:22055 0x9af194 cp_parser_class_specifier ../../gcc/cp/parser.c:22368 0x9a2ec6 cp_parser_type_specifier ../../gcc/cp/parser.c:16441 0x99dd17 cp_parser_decl_specifier_seq ../../gcc/cp/parser.c:13352 0x99c73a cp_parser_simple_declaration ../../gcc/cp/parser.c:12676 0x99c6c2 cp_parser_block_declaration ../../gcc/cp/parser.c:12621 0x99c444 cp_parser_declaration ../../gcc/cp/parser.c:12518 0x99bf9d cp_parser_declaration_seq_opt ../../gcc/cp/parser.c:12394 0x98a935 cp_parser_translation_unit ../../gcc/cp/parser.c:4366 0x9dbd52 c_parse_file() ../../gcc/cp/parser.c:38430 0xb8e93c c_common_parse_file() ../../gcc/c-family/c-opts.c:1107