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

            Bug ID: 102890
           Summary: [12 Regression] ICE in duplicate_and_interleave, at
                    tree-vect-slp.c:6173
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---
            Target: aarch64-linux-gnu

gcc-12.0.0-alpha20211017 snapshot (g:5d4d64faa71a6389bfb76bfb3334b63360cf62c0)
ICEs when compiling the following testcase, reduced from
gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c, w/ -march=armv8-a+sve -O2
-fassociative-math -fno-math-errno -fno-signed-zeros -fno-trapping-math:

float a[8], b[8], c[8];

void
f4 (float d_0, int f4_i)
{
  while (f4_i < 1)
    {
      a[3 * f4_i] = 1.0f
        + __builtin_copysignf(b[3 * f4_i], c[3 * f4_i])
        + __builtin_sqrtf (d_0);
      a[3 * f4_i + 1] = 2.0f
        + __builtin_copysignf(b[3 * f4_i + 1], c[3 * f4_i + 1])
        + __builtin_sqrtf (d_0);
      a[3 * f4_i + 2] = 3.0f
        + __builtin_copysignf(b[3 * f4_i + 2], c[3 * f4_i + 2])
        + __builtin_sqrtf (d_0);
      ++f4_i;
    }
}

% aarch64-linux-gnu-gcc-12.0.0 -march=armv8-a+sve -O2 -fassociative-math
-fno-math-errno -fno-signed-zeros -fno-trapping-math -c bd4s9dy9.c
during GIMPLE pass: vect
bd4s9dy9.c: In function 'f4':
bd4s9dy9.c:4:1: internal compiler error: in duplicate_and_interleave, at
tree-vect-slp.c:6173
    4 | f4 (float d_0, int f4_i)
      | ^~
0x7e6dcf duplicate_and_interleave(vec_info*, gimple**, tree_node*,
vec<tree_node*, va_heap, vl_ptr> const&, unsigned int, vec<tree_node*, va_heap,
vl_ptr>&)
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:6173
0x120360e vect_create_constant_vectors
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:6394
0x120360e vect_schedule_slp_node
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7099
0x121525f vect_schedule_scc
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7417
0x1215e51 vect_schedule_scc
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434
0x1215e51 vect_schedule_scc
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434
0x1215e51 vect_schedule_scc
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434
0x121673f vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>
const&)
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7570
0x11ef0a9 vect_transform_loop(_loop_vec_info*, gimple*)
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-loop.c:9685
0x122251f try_vectorize_loop_1
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vectorizer.c:1110
0x1223141 vectorize_loops()
       
/var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vectorizer.c:1249

Reply via email to