https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96867
Bug ID: 96867 Summary: ICE: tree check: expected parm_decl, have var_decl in handle_omp_array_sections_1, at cp/semantics.c:5086 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: 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: --- gcc-11.0.0-alpha20200830 snapshot (g:6ccadc4c0486ff011a32c74de1a31148acb3cbe2) ICEs when compiling the following testcase, reduced from test/OpenMP/target_update_to_messages.cpp from the clang 10.0.1 test suite, w/ -fopenmp: int *cq; void l0 (int va) { #pragma omp target update to (va, cq[:]) } % g++-11.0.0 -fopenmp -c jwicc9e4.cpp jwicc9e4.cpp: In function 'void l0(int)': jwicc9e4.cpp:6:41: internal compiler error: tree check: expected parm_decl, have var_decl in handle_omp_array_sections_1, at cp/semantics.c:5086 6 | #pragma omp target update to (va, cq[:]) | ^ 0x7c2ce2 tree_check_failed(tree_node const*, char const*, int, char const*, ...) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/tree.c:9714 0x68e1c2 tree_check(tree_node*, char const*, int, char const*, tree_code) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/tree.h:3295 0x68e1c2 handle_omp_array_sections_1 /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/semantics.c:5086 0xa61af2 handle_omp_array_sections /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/semantics.c:5159 0xa669e9 finish_omp_clauses(tree_node*, c_omp_region_type) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/semantics.c:7325 0x9bde94 cp_parser_omp_all_clauses /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:37627 0x9db114 cp_parser_omp_target_update /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:40714 0x9db114 cp_parser_omp_target /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:40893 0x9ae8b2 cp_parser_pragma /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:43948 0x9b77bc cp_parser_statement /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:11529 0x9b845d cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:11921 0x9b8538 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:11871 0x9d0bfc cp_parser_function_body /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:23170 0x9d0bfc cp_parser_ctor_initializer_opt_and_function_body /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:23221 0x9d43d9 cp_parser_function_definition_after_declarator /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:29116 0x9d5439 cp_parser_function_definition_from_specifiers_and_declarator /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:29032 0x9d5439 cp_parser_init_declarator /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:20776 0x9b473e cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:13811 0x9e06fe cp_parser_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:13510 0x9e0df0 cp_parser_translation_unit /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200830/work/gcc-11-20200830/gcc/cp/parser.c:4793 target_update_from_messages.cpp fails similarly.