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.

Reply via email to