aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Lawrence <alan.lawrence@arm.com>2015-11-03 10:35:31 +0000
committerAlan Lawrence <alan.lawrence@arm.com>2015-11-03 10:35:31 +0000
commitffbccfc0e60b7b8fb28ef0959a76a7e88ca1139c (patch)
tree88085aa408086c228a731b209d30e855c4021e2d
parent24625c738ecfbb372cef2f8f4b0e2a9b9b1fc115 (diff)
[AArch64] Fix ICE on (const_double:HF 0.0)
gcc/: * config/aarch64/aarch64.md (*movhf_aarch64): Use aarch64_reg_or_fp_zero for second operand. gcc/testsuite/: * gcc.target/aarch64/fp16/set_zero_1.c: New. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@229701 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.md2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c21
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3034d3733d7..204716ecb0a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-03 Alan Lawrence <alan.lawrence@arm.com>
+
+ * config/aarch64/aarch64.md (*movhf_aarch64): Use
+ aarch64_reg_or_fp_zero for second operand.
+
2015-11-03 Alexandre Oliva <aoliva@redhat.com>
* gimple-expr.c: Include hash-set.h and rtl.h.
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 42c9b5e72e5..6cdddf49102 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -1124,7 +1124,7 @@
[(set (match_operand:HF 0 "nonimmediate_operand" "=w, ?r,w,w,m,r,m ,r")
(match_operand:HF 1 "general_operand" "?rY, w,w,m,w,m,rY,r"))]
"TARGET_FLOAT && (register_operand (operands[0], HFmode)
- || register_operand (operands[1], HFmode))"
+ || aarch64_reg_or_fp_zero (operands[1], HFmode))"
"@
mov\\t%0.h[0], %w1
umov\\t%w0, %1.h[0]
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fb84ea0dc8e..48185b38131 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-11-03 Alan Lawrence <alan.lawrence@arm.com>
+
+ * gcc.target/aarch64/fp16/set_zero_1.c: New.
+
2015-11-03 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/mvc1.c: Move to ...
diff --git a/gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c b/gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
new file mode 100644
index 00000000000..69fd1e8585b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+/* { dg-additional-options "-mfp16-format=ieee" { target "arm*-*-*" } } */
+
+extern void abort (void);
+
+__attribute__ ((noinline))
+void setfoo (__fp16 *f)
+{
+ *f = 0.0;
+}
+
+int
+main (int argc, char **argv)
+{
+ __fp16 a = 1.0;
+ setfoo (&a);
+ if (a != 0.0)
+ abort ();
+ return 0;
+}