Commit 37a1d58a by Kyrylo Tkachov Committed by Kyrylo Tkachov

[fold-const] Fix native_encode_real for HFmode constants

	* fold-const.c (native_encode_real): Fix logic for selecting offset
	to write to when BYTES_BIG_ENDIAN.

From-SVN: r240791
parent aaae096a
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> 2016-10-05 Wilco Dijkstra <wdijkstr@arm.com>
* builtins.c (fold_builtin_strchr): Remove function. * builtins.c (fold_builtin_strchr): Remove function.
......
...@@ -7142,7 +7142,16 @@ native_encode_real (const_tree expr, unsigned char *ptr, int len, int off) ...@@ -7142,7 +7142,16 @@ native_encode_real (const_tree expr, unsigned char *ptr, int len, int off)
offset += byte % UNITS_PER_WORD; offset += byte % UNITS_PER_WORD;
} }
else 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); offset = offset + ((bitpos / BITS_PER_UNIT) & ~3);
if (offset >= off if (offset >= off
&& offset - off < len) && offset - off < len)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment