https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84448
Bug ID: 84448 Summary: [6/7/8 Regression] ICE with broken condition in parallel for loop Product: gcc Version: 8.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: reichelt at gcc dot gnu.org Target Milestone: --- The following invalid code snippet (compiled with "-fopenmp") triggers an ICE since GCC 6.1.0: ================================================= struct A { operator int() const; A& operator +=(int); A& operator ++(); }; void foo(A a, A b) { #pragma omp for for (A i = a; i <=; ++i) ; } ================================================= bug.cc: In function 'void foo(A, A)': bug.cc:11:21: error: expected primary-expression before ';' token for (A i = a; i <=; ++i) ^ bug.cc:12:5: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in element_mode, at tree.c:12977 ; ^ 0x78a73c tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/gcc/tree.c:9385 0x7901e2 tree_class_check(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/gcc/tree.h:3511 0x7901e2 element_mode(tree_node const*) ../../gcc/gcc/tree.c:12977 0xe17198 HONOR_NANS(tree_node const*) ../../gcc/gcc/real.c:5095 0xbe8d2c fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) ../../gcc/gcc/fold-const.c:11132 0xbecd0a fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) ../../gcc/gcc/fold-const.c:12328 0xbe4155 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) ../../gcc/gcc/fold-const.c:9310 0xc00bec fold(tree_node*) ../../gcc/gcc/fold-const.c:11965 0x86803a cp_fold ../../gcc/gcc/cp/cp-gimplify.c:2280 0x868e0c cp_fold_maybe_rvalue ../../gcc/gcc/cp/cp-gimplify.c:2006 0x9a75f7 handle_omp_for_class_iterator ../../gcc/gcc/cp/semantics.c:7665 0x9a75f7 finish_omp_for(unsigned int, tree_code, tree_node*, tree_node*, tree_node*, tree_node*, tree_node*, tree_node*, tree_node*, vec<tree_node*, va_heap, vl_ptr>*, tree_node*) ../../gcc/gcc/cp/semantics.c:8138 0x917251 cp_parser_omp_for_loop ../../gcc/gcc/cp/parser.c:35164 0x93d7d3 cp_parser_omp_for ../../gcc/gcc/cp/parser.c:35362 0x918d34 cp_parser_omp_construct ../../gcc/gcc/cp/parser.c:38080 0x919c27 cp_parser_pragma ../../gcc/gcc/cp/parser.c:38707 0x91c1ec cp_parser_statement ../../gcc/gcc/cp/parser.c:10877 0x91cdc0 cp_parser_statement_seq_opt ../../gcc/gcc/cp/parser.c:11255 0x91ce97 cp_parser_compound_statement ../../gcc/gcc/cp/parser.c:11209 0x933610 cp_parser_function_body ../../gcc/gcc/cp/parser.c:21750 Please submit a full bug report, [etc.]