Commit df94599f by Ilya Enkovich Committed by Ilya Enkovich

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
parent f17b0ebc
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
......@@ -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;
......
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
......
/* { 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 ();
}
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