https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89002
Bug ID: 89002 Summary: ICE in scan_omp_1_op, at omp-low.c:3166 Product: gcc Version: 5.0 Status: UNCONFIRMED Keywords: openmp Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- 1. gcc-9.0.0-alpha20190120 snapshot (r268107) ICEs when compiling the following testcase w/ -fopenmp: void bl (int j4) { int lh; int *u4 = &lh; #pragma omp parallel #pragma omp taskloop lastprivate (lh) for (lh = 0; lh < j4; ++lh) { } } % gcc-9.0.0-alpha20190120 -fopenmp -c ydeu3h7i.c during GIMPLE pass: omplower ydeu3h7i.c: In function 'bl': ydeu3h7i.c:8:9: internal compiler error: in scan_omp_1_op, at omp-low.c:3166 8 | #pragma omp taskloop lastprivate (lh) | ^~~ 0x6630f7 scan_omp_1_op /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:3166 0x1046ea2 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/tree.c:12064 0xadaa5e walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:221 0xadacc1 walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:586 0xadae60 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:51 0xc40501 scan_omp /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:3368 0xc476f7 scan_sharing_clauses /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:1609 0xc49aca scan_omp_for /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:2337 0xc4a815 scan_omp_1_stmt /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:3291 0xadac8f walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:568 0xadae60 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:51 0xadad41 walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:675 0xadae60 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:51 0xc40501 scan_omp /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:3368 0xc4a5e5 scan_omp_task /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:1974 0xc4a5e5 scan_omp_1_stmt /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/omp-low.c:3280 0xadac8f walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:568 0xadae60 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:51 0xadad41 walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:675 0xadae60 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-walk.c:51 2. gcc 8.2, 7.4, 6.3 ICE differently w/ this testcase: ydeu3h7i.c:8:9: error: non-trivial conversion at assignment #pragma omp taskloop lastprivate (lh) ^~~ <<< error >>> int <<< error >>> = lh; ydeu3h7i.c:8:9: error: non-register as LHS of binary operation <<< error >>> = <<< error >>> + 1; ydeu3h7i.c:8: confused by earlier errors, bailing out with -fchecking, or during GIMPLE pass: local-fnsummary ydeu3h7i.c: In function 'bl._omp_fn.1': ydeu3h7i.c:12:1: internal compiler error: in estimate_operator_cost, at tree-inline.c:3960 } ^ without. 3. Removing "#pragma omp parallel" but adding -fchecking yields PR88975 w/ gcc 9.0, 8.2, and 7.4, and aforementioned "error: non-trivial conversion at assignment" w/ gcc 6.3.