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

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I've been just concerned, many backends derive (perhaps incorrectly) passing
conventions from DECL_MODE or TYPE_MODE and so any changes in that are a red
flag to me.
If passing as arguments and returning the vectors sized the same as element
size always ICEd, then it is not an ABI issue, because any old program using
those wouldn't compile.  Are the ICEs on both the caller and callee side
though?
I mean, which of these tests ICE?
test1.c:
typedef double V __attribute__ ((vector_size (8)));
V foo (void);
V x;
void bar (void)
{
  x = foo ();
}
test2.c:
typedef double V __attribute__ ((vector_size (8)));
void foo (V);
V x;
void bar (void)
{
  foo (x);
}
test3.c:
typedef double V __attribute__ ((vector_size (8)));
V x;
V foo (void)
{
  return x;
}
test4.c:
typedef double V __attribute__ ((vector_size (8)));
V x;
void foo (V y)
{
  x = y;
}

If not all 4 ICE, then perhaps one could compile with 4.9.0 objects containing
just the caller (or just the callee) and try to put it together with 4.9.1
built objects.

Reply via email to