https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126064
Bug ID: 126064
Summary: [17 Regression] ICE in intrinsics lowering
Product: gcc
Version: 16.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*
Likely related to the new intrinsics framework.
#include <stdint.h>
#include <arm_neon.h>
void repro(uint8_t *dst, uint8x8_t a, uint8x8_t b) {
uint32x2x2_t t;
uint32x2_t r;
uint8x8_t c;
r = vrev64_u32(vreinterpret_u32_u8(b));
t = vtrn_u32(vreinterpret_u32_u8(a), r);
c = vreinterpret_u8_u32(t.val[1]);
t = vtrn_u32(t.val[0], vreinterpret_u32_u8(c));
t.val[1] = vrev64_u32(t.val[1]);
vst1_u8(dst, vreinterpret_u8_u32(t.val[1]));
}
ICEs in lowering compiled with -O2
during GIMPLE pass: lower
<source>: In function 'repro':
<source>:4:6: internal compiler error: in fold, at
config/aarch64/aarch64-neon-builtins-base.cc:565
4 | void repro(uint8_t *dst, uint8x8_t a, uint8x8_t b) {
| ^~~~~