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

            Bug ID: 127599
           Summary: [17 Regression] Intrinsics workloads ICE with segfault
                    on AArch64 since
                    g:4182cf11e1e3d2ebcf4f5c3dff157f844a635bf8
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tnfchris at gcc dot gnu.org
  Target Milestone: ---
            Target: aarch64*

The following testcase:

#include <arm_neon.h>

int32x4_t b;
void c() {
  b = vrev64q_s32(b);
  b = vextq_s32(b, b, 2);
}

compiled with -O1 ICEs with

intri-ice.c:7:1: internal compiler error: Segmentation fault
    7 | }
      | ^
0x3d7bea3 internal_error(char const*, ...)
        src/gcc/gcc/diagnostic-global-context.cc:787
0x1bdd048 crash_signal
        src/gcc/gcc/toplev.cc:325
0x766b55e45caf ???
        ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x131257f gimple_bb(gimple const*)
        src/gcc/gcc/gimple.h:1919
0x21f36fd aarch64_evpc_rev64_ext
        src/gcc/gcc/config/aarch64/aarch64.cc:28559
0x21f5d42 aarch64_expand_vec_perm_const_1
        src/gcc/gcc/config/aarch64/aarch64.cc:29042
0x21f610e aarch64_vectorize_vec_perm_const
        src/gcc/gcc/config/aarch64/aarch64.cc:29116
0x19cd030 can_vec_perm_const_p(machine_mode, machine_mode, vec_perm_indices
const&, bool)

since

🔍 Bisect completed in 37.71s (18 steps: 10 pass, 8 fail)
🔍 Offending commit details:
commit g:4182cf11e1e3d2ebcf4f5c3dff157f844a635bf8
Author: Pengxuan Zheng

    aarch64: Recognize vector permute patterns which can be optimized as
REV64+EXT [PR102055]

Because during a `can_vec_perm_const_p` check the permute is not in IL so BB is
null.

The order of the

  if (is_bb_in_loop (gimple_bb (currently_expanding_gimple_stmt)))
    return false;

  if (d->testing_p)
    return true;

checks should be flipped.

Reply via email to