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.

Reply via email to