http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56570
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-08
12:15:13 UTC ---
typedef struct { unsigned long long w[4]; } UINT256;
static void add256 (UINT256 x, UINT256 y, UINT256 * pz)
{
UINT256 z;
z.w[0] = x.w[0] + y.w[0];
z.w[1] = x.w[1] + y.w[1];
z.w[2] = x.w[2] + y.w[2];
z.w[3] = x.w[3] + y.w[3];
*pz = z;
}
static inline void bid128_ext_fma ()
{
UINT256 C4;
UINT256 R256;
add256 (C4, R256, &R256);
nr_digits256 (R256);
}
void __bid128_fma ()
{
bid128_ext_fma ();
}
ICEs at -O2 -g -m32 with the extra checking.