On Tue, Jan 07, 2014 at 03:54:56PM +0100, Richard Biener wrote: > 2014-01-07 Richard Biener <rguent...@suse.de> > > PR middle-end/59471 > * gimplify.c (gimplify_expr): Gimplify register-register type > VIEW_CONVERT_EXPRs to separate stmts. > > * gcc.dg/pr59471.c: New testcase.
The testcase fails on i686-linux, because of the ABI warnings. I've verified following change ICEd without your fix and works with your fix, bootstrapped/regtested it on x86_64-linux and i686-linux and committed to trunk as obvious. 2014-01-08 Jakub Jelinek <ja...@redhat.com> PR middle-end/59471 * gcc.dg/pr59471.c (foo): Avoid vector type arguments or return type, use pointers to vector type instead. --- gcc/testsuite/gcc.dg/pr59471.c.jj 2014-01-08 10:23:20.000000000 +0100 +++ gcc/testsuite/gcc.dg/pr59471.c 2014-01-08 17:52:42.000000000 +0100 @@ -9,8 +9,8 @@ __attribute__ ((__vector_size__ (16))); typedef unsigned int uint32x4_t __attribute__ ((__vector_size__ (16))); -uint8x4_t -foo (uint16x8_t x) +void +foo (uint16x8_t *x, uint8x4_t *y) { - return (uint8x4_t) ((uint32x4_t) x)[0]; + *y = (uint8x4_t) ((uint32x4_t) (*x))[0]; } Jakub