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

            Bug ID: 109178
           Summary: ICE using __builtin_vec_xst_trunc built-in
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bergner at gcc dot gnu.org
  Target Milestone: ---

We ICE on the following simple test case.  This ICEs on trunk and GCC 12 and
works on GCC 11 and earlier.

bergner@ltcden2-lp1:~$ cat bug.c 
#include <altivec.h>

void
foo (signed int *dst, vector signed __int128 src)
{
  __builtin_vec_xst_trunc(src, 0, dst);
}

bergner@ltcden2-lp1:~$ gcc -S -O2 -mcpu=power10 bug.c 
bug.c: In function ‘foo’:
bug.c:7:1: error: unrecognizable insn:
    7 | }
      | ^
(insn 9 8 0 2 (set (mem:DI (reg:DI 119) [0  S8 A8])
        (truncate:SI (reg:TI 120))) "bug4.c":6:3 -1
     (nil))
during RTL pass: vregs
bug.c:7:1: internal compiler error: in extract_insn, at recog.cc:2791


The above should be mem:SI and is caused by a typo in the rs6000 built-in
rewrite in GCC 12.  I have a patch I'm testing.

Reply via email to