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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
BTW,
typedef unsigned char V __attribute__((vector_size (16)));
long double
foo (void)
{
  long double d;
  *(V *)&d = (V) { 149, 136, 89, 42, 38, 240, 196, 194 };
  return d;
}
ICEs at -O2 too since r14-4537-g70b5c6981fcdff246f90e57e91f3e1667eab2eb3
so I'm afraid even trying to optimize the
XFmode lowpart SUBREG of the CONST_VECTOR into same size SUBREG from half sized
CONST_VECTOR to XFmode wouldn't help, because that is exactly what we have in
this testcase,
(insn 5 2 6 2 (set (reg/v:XF 98 [ d ])
        (subreg:XF (const_vector:V16QI [
                    (const_int -107 [0xffffffffffffff95])
                    (const_int -120 [0xffffffffffffff88])
                    (const_int 89 [0x59])
                    (const_int 42 [0x2a])
                    (const_int 38 [0x26])
                    (const_int -16 [0xfffffffffffffff0])
                    (const_int -60 [0xffffffffffffffc4])
                    (const_int -62 [0xffffffffffffffc2])
                    (const_int 0 [0]) repeated x8
                ]) 0)) "pr114184-4.c":6:12 -1
     (nil))

Reply via email to