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

            Bug ID: 111947
           Summary: RISC-V vector: RTL Check: expected code 'reg', have
                    'const_int' in rhs_regno, at rtl.h:1934
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: patrick at rivosinc dot com
  Target Milestone: ---

Created attachment 56184
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56184&action=edit
-freport-bug output

Ran into an ICE with glibc with rtl checking enabled.

Bisected to/caused by commit: r14-4773-g29331e72d0c

during RTL pass: vsetvl
inet_ntop.c: In function 'inet_ntop':
inet_ntop.c:65:1: internal compiler error: RTL check: expected code 'reg', have
'const_int' in rhs_regno, at rtl.h:1934
   65 | }
      | ^
0x961683 rtl_check_failed_code1(rtx_def const*, rtx_code, char const*, int,
char const*)
        ../../../gcc/gcc/rtl.cc:770
0x99934c rhs_regno(rtx_def const*)
        ../../../gcc/gcc/rtl.h:1934
0x999dec rhs_regno(rtx_def const*)
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:2628
0x999dec pre_vsetvl::compute_lcm_local_properties()
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:2695
0x1734a89 pre_vsetvl::earliest_fuse_vsetvl_info()
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:2885
0x1735e29 pass_vsetvl::lazy_vsetvl()
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3524
0x17361b7 pass_vsetvl::execute(function*)
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3571
0x17361b7 pass_vsetvl::execute(function*)
        ../../../gcc/gcc/config/riscv/riscv-vsetvl.cc:3554

Reduced testcase from a glibc build failure:

char *a;
b() {
  int c[2];
  int d = 0;
  for (; d < 16; d += 2)
    c[d / 2] = a[d | 1];
  if (c[0])
    for (;;)
      ;
}

Reply via email to