http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54342
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> 2012-08-23 17:16:21
UTC ---
(In reply to comment #8)
> I don't think AVX supports true 256-bit integer. On the other hand, I was
> also puzzled by compute_record_mode, which excludes UNION_TYPE and
> QUAL_UNION_TYPE. Will including them break union?
It breaks gcc.c-torture/compile/pr42196-2.c:
union U
{
__complex__ int ci;
__complex__ float cf;
};
float gd;
extern float bar (union U);
float foo (int b, double f1, double f2, int c1, int c2)
{
union U u;
double r;
if (b)
{
__real__ u.cf = f1;
__imag__ u.cf = f2;
}
else
{
__real__ u.ci = c1;
__imag__ u.ci = c2;
}
r = bar (u);
return r;
}
The proper fix is to allow OImode in your case without adding it to
VALID_AVX256_REG_MODE.