[Bug tree-optimization/98685] New: [11 Regression] ICE verify_flow_info failed since r11-6649-g285fa338b06b804e

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 14 16:35:55 GMT 2021


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

            Bug ID: 98685
           Summary: [11 Regression] ICE verify_flow_info failed since
                    r11-6649-g285fa338b06b804e
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: rguenth at gcc dot gnu.org
  Target Milestone: ---

Reduced from schily package:

$ cat lockit.i
char onelock_lock[16];
void write(void);

void lockit(int count) {
  for (; count;) {
    int pid, i;
    char *p;
    for (i = 0, p = (char *)&pid; i < sizeof 0; i++)
      onelock_lock[i] = *p++;
    write();
  }
}

$ gcc lockit.i -c -O3 -fdump-tree-slp=/dev/stdout

;; Function lockit (lockit, funcdef_no=0, decl_uid=1946, cgraph_uid=1,
symbol_order=1)

lockit.i: In function ‘lockit’:
lockit.i:4:6: error: control flow in the middle of basic block 2
    4 | void lockit(int count) {
      |      ^~~~~~
lockit.i:4:6: error: control flow in the middle of basic block 2
lockit.i:4:6: error: true/false edge after a non-GIMPLE_COND in bb 2
lockit.i:4:6: error: true/false edge after a non-GIMPLE_COND in bb 2
during GIMPLE pass: slp
dump file: /dev/stdout

A SLP node is placed after a condition:

  <bb 2> [local count: 26541933]:
  if (count_8(D) != 0)
  _6 = VIEW_CONVERT_EXPR<vector(4) char>(pid_16(D));
  _4 = _6;


More information about the Gcc-bugs mailing list