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.