https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91110
Bug ID: 91110 Summary: [10 Regression] ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in cp_omp_mappable_type_1, at cp/decl2.c:1421 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: error-recovery, ice-on-invalid-code, openmp Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-10.0.0-alpha20190707 snapshot (r273184) ICEs when compiling the following testcase derived from gcc/testsuite/gcc.dg/gomp/_Atomic-5.c w/ -fopenmp: void f1 (void) { X int b[2]; b[0] = 1; #pragma omp target map(to: b) ; } % g++-10.0.0-alpha20190707 -fopenmp -c e8gxtyxe.c e8gxtyxe.c: In function 'void f1()': e8gxtyxe.c:4:3: error: 'X' was not declared in this scope 4 | X int b[2]; | ^ e8gxtyxe.c:5:3: error: 'b' was not declared in this scope 5 | b[0] = 1; | ^ e8gxtyxe.c:6:30: error: 'b' does not have a mappable type in 'map' clause 6 | #pragma omp target map(to: b) | ^ e8gxtyxe.c:6:32: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in cp_omp_mappable_type_1, at cp/decl2.c:1421 6 | #pragma omp target map(to: b) | ^ 0x7d125e tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/tree.c:9950 0x5f39fa tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/tree.h:3340 0x5f39fa cp_omp_mappable_type_1 /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/decl2.c:1421 0xa43c69 finish_omp_clauses(tree_node*, c_omp_region_type) /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/semantics.c:7241 0x9b3267 cp_parser_omp_all_clauses /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:35735 0x9c4146 cp_parser_omp_target /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:38918 0x99f583 cp_parser_pragma /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:41352 0x9a76fd cp_parser_statement /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:11279 0x9a8665 cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:11667 0x9a8735 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:11621 0x9c0cbc cp_parser_function_body /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:22651 0x9c0cbc cp_parser_ctor_initializer_opt_and_function_body /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:22702 0x9c15ad cp_parser_function_definition_after_declarator /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:28016 0x9c23a3 cp_parser_function_definition_from_specifiers_and_declarator /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:27932 0x9c23a3 cp_parser_init_declarator /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:20288 0x9a4e7d cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:13546 0x9c8822 cp_parser_declaration /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:13243 0x9c8eb8 cp_parser_translation_unit /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:4699 0x9c8eb8 c_parse_file() /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/cp/parser.c:41495 0xad25ec c_common_parse_file() /var/tmp/portage/sys-devel/gcc-10.0.0_alpha20190707/work/gcc-10-20190707/gcc/c-family/c-opts.c:1160