This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/84448] New: [6/7/8 Regression] ICE with broken condition in parallel for loop


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.]

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]