https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103705
Bug ID: 103705 Summary: ICE: tree check: expected tree that contains 'decl minimal' structure, have 'array_ref' in finish_omp_clauses, at cp/semantics.c:7928 Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, openmp Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++ 12.0.0 20211212 snapshot (g:0b52083ea2c2dd9897031fdc3802a68fd4aa45ef) ICEs when compiling the following testcase, reduced from test/OpenMP/target_update_from_messages.cpp, w/ -fopenmp: struct S6 { int aa[2]; }; int main(int argc, char **argv) { S6 s6[1]; #pragma omp target update from(s6[0].aa[0:1]) return 0; } % g++-12.0.0 -fopenmp -c a6slhg1u.cpp a6slhg1u.cpp: In function 'int main(int, char**)': a6slhg1u.cpp:8:46: internal compiler error: tree check: expected tree that contains 'decl minimal' structure, have 'array_ref' in finish_omp_clauses, at cp/semantics.c:7928 8 | #pragma omp target update from(s6[0].aa[0:1]) | ^ 0x867eab tree_contains_struct_check_failed(tree_node const*, tree_node_structure_enum, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree.c:8876 0x951671 contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree.h:3555 0xb863cb finish_omp_clauses(tree_node*, c_omp_region_type) /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/semantics.c:7928 0xad9e8b cp_parser_omp_all_clauses /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:40261 0xaee66b cp_parser_omp_target_update /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:44135 0xaee66b cp_parser_omp_target /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:44309 0xabb124 cp_parser_pragma /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:47798 0xac36f0 cp_parser_statement /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:12346 0xac4a8d cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:12802 0xac4b68 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:12751 0xae5593 cp_parser_function_body /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:24998 0xae5593 cp_parser_ctor_initializer_opt_and_function_body /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:25049 0xae658a cp_parser_function_definition_after_declarator /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:31182 0xae784b cp_parser_function_definition_from_specifiers_and_declarator /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:31098 0xae784b cp_parser_init_declarator /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:22520 0xac166f cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:15232 0xaf2bb5 cp_parser_declaration /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:14918 0xaf3599 cp_parser_toplevel_declaration /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:14939 0xaf3599 cp_parser_translation_unit /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:4987 0xaf3599 c_parse_file() /var/tmp/portage/sys-devel/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/cp/parser.c:47944