diff options
author | Ilya Enkovich <enkovich.gnu@gmail.com> | 2015-11-17 13:22:40 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2015-11-17 13:22:40 +0000 |
commit | df94599f0b58ce81db5039ab2de9a31055990811 (patch) | |
tree | b862ec477cf82f2b150bdd115f077a37f35a26e7 /gcc | |
parent | f17b0ebc79a09122a3ed86ded43c3c0e68640314 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/targhooks.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr68134.c | 19 |
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 (); +} |