https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114197

            Bug ID: 114197
           Summary: [14] middle-end: ICE in verify_dominators
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ewlu at rivosinc dot com
  Target Milestone: ---

Tested with riscv and x86_64

godbolt: https://godbolt.org/z/EvWj99d4b

#pragma pack(push)
struct a {
  volatile signed b : 8;
};
#pragma pack(pop)
int c;
static struct a d = {5};
void e() {
f:
  for (c = 8; c < 55; ++c)
    if (!d.b)
      goto f;
}

testcase.c: In function 'e':
testcase.c:8:6: error: dominator of 7 should be 3, not 9
    8 | void e() {
      |      ^
during GIMPLE pass: vect
dump file: testcase.c.179t.vect
testcase.c:8:6: internal compiler error: in verify_dominators, at
dominance.cc:1194
0xa0954c verify_dominators(cdi_direction)
        ../../../gcc/gcc/dominance.cc:1194
0x15e7ed1 checking_verify_dominators(cdi_direction)
        ../../../gcc/gcc/dominance.h:76
0x15e7ed1 slpeel_tree_duplicate_loop_to_edge_cfg(loop*, edge_def*, loop*,
edge_def*, edge_def*, edge_def**, bool, vec<basic_block_def*, va_heap,
vl_ptr>*)
        ../../../gcc/gcc/tree-vect-loop-manip.cc:1945
0x15ea20a vect_do_peeling(_loop_vec_info*, tree_node*, tree_node*, tree_node**,
tree_node**, tree_node**, int, bool, bool, tree_node**)
        ../../../gcc/gcc/tree-vect-loop-manip.cc:3426
0x15d982e vect_transform_loop(_loop_vec_info*, gimple*)
        ../../../gcc/gcc/tree-vect-loop.cc:11935
0x161f981 vect_transform_loops
        ../../../gcc/gcc/tree-vectorizer.cc:1006
0x16200f3 try_vectorize_loop_1
        ../../../gcc/gcc/tree-vectorizer.cc:1152
0x16200f3 try_vectorize_loop
        ../../../gcc/gcc/tree-vectorizer.cc:1182
0x162077c execute
        ../../../gcc/gcc/tree-vectorizer.cc:1298

Reply via email to