* fold-const.c (native_encode_real): Fix logic for selecting offset
to write to when BYTES_BIG_ENDIAN.
From-SVN: r240791
+2016-10-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * fold-const.c (native_encode_real): Fix logic for selecting offset
+ to write to when BYTES_BIG_ENDIAN.
+
2016-10-05 Wilco Dijkstra <wdijkstr@arm.com>
* builtins.c (fold_builtin_strchr): Remove function.
offset += byte % UNITS_PER_WORD;
}
else
- offset = BYTES_BIG_ENDIAN ? 3 - byte : byte;
+ {
+ offset = byte;
+ if (BYTES_BIG_ENDIAN)
+ {
+ /* Reverse bytes within each long, or within the entire float
+ if it's smaller than a long (for HFmode). */
+ offset = MIN (3, total_bytes - 1) - offset;
+ gcc_assert (offset >= 0);
+ }
+ }
offset = offset + ((bitpos / BITS_PER_UNIT) & ~3);
if (offset >= off
&& offset - off < len)