aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Enkovich <enkovich.gnu@gmail.com>2015-11-17 13:22:40 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2015-11-17 13:22:40 +0000
commitdf94599f0b58ce81db5039ab2de9a31055990811 (patch)
treeb862ec477cf82f2b150bdd115f077a37f35a26e7 /gcc
parentf17b0ebc79a09122a3ed86ded43c3c0e68640314 (diff)
downloadgcc-df94599f0b58ce81db5039ab2de9a31055990811.zip
gcc-df94599f0b58ce81db5039ab2de9a31055990811.tar.gz
gcc-df94599f0b58ce81db5039ab2de9a31055990811.tar.bz2
re PR middle-end/68134 (float64x1_t comparison ICE on aarch64-none-elf)
gcc/ PR middle-end/68134 * targhooks.c (default_get_mask_mode): Filter out scalar modes returned by mode_for_vector. gcc/testsuite/ PR middle-end/68134 * gcc.dg/pr68134.c: New test. From-SVN: r230463
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/targhooks.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr68134.c19
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 23de980..9543914 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-17 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR middle-end/68134
+ * targhooks.c (default_get_mask_mode): Filter out
+ scalar modes returned by mode_for_vector.
+
2015-11-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/68143
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index c34b4e9..66d983b 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1093,8 +1093,8 @@ default_get_mask_mode (unsigned nunits, unsigned vector_size)
gcc_assert (elem_size * nunits == vector_size);
vector_mode = mode_for_vector (elem_mode, nunits);
- if (VECTOR_MODE_P (vector_mode)
- && !targetm.vector_mode_supported_p (vector_mode))
+ if (!VECTOR_MODE_P (vector_mode)
+ || !targetm.vector_mode_supported_p (vector_mode))
vector_mode = BLKmode;
return vector_mode;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9f65ab5..b8bb337 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-17 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR middle-end/68134
+ * gcc.dg/pr68134.c: New test.
+
2015-11-17 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/68143
diff --git a/gcc/testsuite/gcc.dg/pr68134.c b/gcc/testsuite/gcc.dg/pr68134.c
new file mode 100644
index 0000000..522b4c6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr68134.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c99" } */
+
+#include <stdint.h>
+
+typedef double float64x1_t __attribute__ ((vector_size (8)));
+typedef uint64_t uint64x1_t;
+
+void
+foo (void)
+{
+ float64x1_t arg1 = (float64x1_t) 0x3fedf9d4343c7c80;
+ float64x1_t arg2 = (float64x1_t) 0x3fcdc53742ea9c40;
+ uint64x1_t result = (uint64x1_t) (arg1 == arg2);
+ uint64_t got = result;
+ uint64_t exp = 0;
+ if (got != 0)
+ __builtin_abort ();
+}