[Bug tree-optimization/101242] New: Segfault in SLP vectorizor after 2ad71efb5de

jamborm at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jun 28 13:30:28 GMT 2021


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

            Bug ID: 101242
           Summary: Segfault in SLP vectorizor after 2ad71efb5de
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jamborm at gcc dot gnu.org
                CC: rguenth at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-linux
            Target: x86_64-linux

Since commit 2ad71efb5de (fix BB reduc permute elide with life stmts), the
following testcase (reduced from 433.milc) ICEs for me when compiled at -Ofast
(on x86_64-linux with generic march):

typedef struct {
  double real;
  double imag;
} complex;
typedef struct {
  complex e[3][3];
} su3_matrix;
su3_matrix check_su3_c;
double check_su3_ar, check_su3_ari, check_su3_max;
int arireturn();
int check_su3() {
  check_su3_ar = check_su3_c.e[0][0].real * check_su3_c.e[1][0].real +
                 check_su3_c.e[0][0].imag * check_su3_c.e[1][0].imag +
                 check_su3_c.e[0][1].real * check_su3_c.e[1][1].real +
                 check_su3_c.e[0][1].imag * check_su3_c.e[1][1].imag +
                 check_su3_c.e[0][2].real * check_su3_c.e[1][2].real +
                 check_su3_c.e[0][2].imag * check_su3_c.e[1][2].imag;
  check_su3_max = check_su3_c.e[0][0].real * check_su3_c.e[2][0].real +
                  check_su3_c.e[0][0].imag * check_su3_c.e[2][0].imag +
                  check_su3_c.e[0][1].real * check_su3_c.e[2][1].real +
                  check_su3_c.e[0][1].imag * check_su3_c.e[2][1].imag +
                  check_su3_c.e[0][2].real * check_su3_c.e[2][2].real +
                  check_su3_c.e[0][2].imag * check_su3_c.e[2][2].imag;
  check_su3_ari = check_su3_ar;
  if (check_su3_ari)
    check_su3_max = check_su3_c.e[1][0].real * check_su3_c.e[2][0].real +
                    check_su3_c.e[1][0].imag * check_su3_c.e[2][0].imag +
                    check_su3_c.e[1][1].real * check_su3_c.e[2][1].real +
                    check_su3_c.e[1][1].imag * check_su3_c.e[2][1].imag +
                    check_su3_c.e[1][2].real * check_su3_c.e[2][2].real +
                    check_su3_c.e[1][2].imag * check_su3_c.e[2][2].imag;
  if (check_su3_max)
    arireturn();
  return 0;
}


More information about the Gcc-bugs mailing list