------- Comment #1 from hjl dot tools at gmail dot com 2008-07-03 17:17 ------- There are
{ REAL_VALUE_TYPE r; unsigned HOST_WIDE_INT p[2]; long l[4]; /* TFmode is 128 bits */ REAL_VALUE_FROM_CONST_DOUBLE (r, in); real_to_target (l, &r, TFmode); if (FLOAT_WORDS_BIG_ENDIAN) { p[0] = (((unsigned HOST_WIDE_INT) l[0]) << 32) + l[1]; p[1] = (((unsigned HOST_WIDE_INT) l[2]) << 32) + l[3]; } else { p[0] = (((unsigned HOST_WIDE_INT) l[3]) << 32) + l[2]; p[1] = (((unsigned HOST_WIDE_INT) l[1]) << 32) + l[0]; } out[0] = GEN_INT (p[0]); out[1] = GEN_INT (p[1]); real_to_target converts array of long in the correct endian. Do we need to adjust endian again? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36720