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

            Bug ID: 113555
           Summary: Yet another failure in verify_ssa
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

Today's gcc trunk says:

$ ~/gcc/results.20240123.asan.ubsan/bin/gcc -c -O3 -w bug1000.c
$ ~/gcc/results.20240123.asan.ubsan/bin/gcc -c -O3 -w -march=znver3 bug1000.c
bug1000.c: In function ‘net_roa_check_ip4_trie_tab’:
bug1000.c:20:6: error: definition in block 4 does not dominate use in block 5
   20 | void net_roa_check_ip4_trie_tab() {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
for SSA_NAME: vect__14.32_111 in statement:
vect__14.32_112 = PHI <vect__14.32_111(5)>
PHI argument
vect__14.32_111
for PHI node
vect__14.32_112 = PHI <vect__14.32_111(5)>
during GIMPLE pass: vect
bug1000.c:20:6: internal compiler error: verify_ssa failed

Reduced source code is

int ip4_getbit_a, ip4_getbit_pos, ip4_clrbit_pos;
void ip4_clrbit(int *a) { *a &= ip4_clrbit_pos; }
typedef struct {
  char pxlen;
  int prefix
} net_addr_ip4;
void fib_get_chain();
int trie_match_longest_ip4();
int trie_match_next_longest_ip4(net_addr_ip4 *n) {
  int __trans_tmp_1;
  while (n->pxlen) {
    n->pxlen--;
    ip4_clrbit(&n->prefix);
    __trans_tmp_1 = ip4_getbit_a >> ip4_getbit_pos;
    if (__trans_tmp_1)
      return 1;
  }
  return 0;
}
void net_roa_check_ip4_trie_tab() {
  net_addr_ip4 px0;
  for (int _n = trie_match_longest_ip4(&px0); _n;
       _n = trie_match_next_longest_ip4(&px0))
    fib_get_chain();
}

The bug seems to have existed since at least 20231227.

On a side note, 1000 bug reports and enhancement requests in 11 years.

Reply via email to