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.