aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2017-08-02 08:55:59 +0000
committerTamar Christina <tnfchris@gcc.gnu.org>2017-08-02 08:55:59 +0000
commit5c22bb4836c535c027a94e22dbfa33d406ae7c89 (patch)
tree8d844630743a7e0a85a4e97987ff0d86332f73b7
parente4f0733af41d5fa2035f6eceb24a74ccba13afcf (diff)
downloadgcc-5c22bb4836c535c027a94e22dbfa33d406ae7c89.zip
gcc-5c22bb4836c535c027a94e22dbfa33d406ae7c89.tar.gz
gcc-5c22bb4836c535c027a94e22dbfa33d406ae7c89.tar.bz2
aarch64.c (aarch64_reinterpret_float_as_int): Correct endianness.
2017-08-02 Tamar Christina <tamar.christina@arm.com> * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int): Correct endianness. From-SVN: r250818
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9f8e3e..6cd5ca7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-02 Tamar Christina <tamar.christina@arm.com>
+
+ * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
+ Correct endianness.
+
2017-08-02 Jakub Jelinek <jakub@redhat.com>
PR middle-end/79499
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 5a2ad7e..fac5063 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -4733,9 +4733,14 @@ aarch64_reinterpret_float_as_int (rtx value, unsigned HOST_WIDE_INT *intval)
CONST_DOUBLE_REAL_VALUE (value),
REAL_MODE_FORMAT (mode));
- ival = zext_hwi (res[0], 32);
- if (GET_MODE_BITSIZE (mode) == GET_MODE_BITSIZE (DFmode))
- ival |= (zext_hwi (res[1], 32) << 32);
+ if (mode == DFmode)
+ {
+ int order = BYTES_BIG_ENDIAN ? 1 : 0;
+ ival = zext_hwi (res[order], 32);
+ ival |= (zext_hwi (res[1 - order], 32) << 32);
+ }
+ else
+ ival = zext_hwi (res[0], 32);
*intval = ival;
return true;