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

            Bug ID: 125947
           Summary: ICE in extract_constrain_insn, at recog.cc:2795 (insn
                    does not satisfy its constraints:
                    *aarch64_simd_movv2qi)
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dhruvc at gcc dot gnu.org
  Target Milestone: ---
            Target: aarch64

Looks like the same issue as PR125716.

Test case:

===
namespace c
{
template <typename d> void move (d);
struct b
{
  char operator[] (int);
};
template <typename d> struct f
{
  f () = default;
  f (f &);
  void
  g (d e)
  {
    move (e);
  }
};
} // namespace c

struct a
{
  a (char);
  a (c::b &);

  char m_a, m_z;
  c::f<a> h;
};

a::a (char ch) : m_a (ch) {}
a::a (c::b &str)
{
  for (int i;;)
    h.g (str[i]);
}
===

Compiled with: -mcpu=olympus -muser-provided-CPU=file.json -O3

JSON:

===
{
  "metadata": {
    "gcc_version": 17
  },
  "tune_params": {
    "regmove_cost": {
      "GP2FP": 2
    },
    "vec_costs": {
      "scalar_store_cost": 5
    }
  }
}
===

Gives the following error:

t.cpp: In constructor ‘a::a(c::b&)’:
t.cpp:34:1: error: insn does not satisfy its constraints:
   34 | }
      | ^
(insn 54 16 14 3 (set (reg:V2QI 63 v31 [orig:109 _1 ] [109])
        (reg:V2QI 3 x3 [orig:109 _1 ] [109])) "t.cpp":20:8 1390
{*aarch64_simd_movv2qi}
     (nil))
during RTL pass: reload
t.cpp:34:1: internal compiler error: in extract_constrain_insn, at
recog.cc:2795
0x28764b7 internal_error(char const*, ...)
        ../../gcc/gcc/diagnostic-global-context.cc:787
0x8a311b fancy_abort(char const*, int, char const*)
        ../../gcc/gcc/diagnostics/context.cc:1813
0x87e81b _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        ../../gcc/gcc/rtl-error.cc:108
0x87e85b _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        ../../gcc/gcc/rtl-error.cc:118
0x13b0ce3 extract_constrain_insn(rtx_insn*)
        ../../gcc/gcc/recog.cc:2795
0x12317e7 check_rtl
        ../../gcc/gcc/lra.cc:2242
0x12363e7 lra(_IO_FILE*, int)
        ../../gcc/gcc/lra.cc:2691
0x11e7e1b do_reload
        ../../gcc/gcc/ira.cc:6094
0x11e7e1b execute
        ../../gcc/gcc/ira.cc:6282
/proj/grco/gcc/Linux_aarch64/upstream-main/latest/libexec/gcc/aarch64-unknown-linux-gnu/17.0.0/cc1plus
-quiet -imultiarch aarch64-linux-gnu -D_GNU_SOURCE t.cpp
-mno-fix-cortex-a53-835769 -mno-fix-cortex-a53-843419 -quiet -dumpdir a-
-dumpbase t.cpp -dumpbase-ext .cpp -mcpu=olympus -muser-provided-CPU=u.json
-mlittle-endian -mabi=lp64 -O3 -mno-fix-cortex-a53-835769
-mno-fix-cortex-a53-843419 -o /tmp/ccGMZ8s5.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to