targhooks.c (default_get_mask_mode): Use BLKmode in case target doesn't support required vector mode.

gcc/

2015-10-29  Ilya Enkovich  <enkovich.gnu@gmail.com>

	* targhooks.c (default_get_mask_mode): Use BLKmode in
	case target doesn't support required vector mode.
	* stor-layout.c (layout_type); Check for BLKmode.

From-SVN: r229794
This commit is contained in:
Ilya Enkovich 2015-11-05 09:46:10 +00:00 committed by Ilya Enkovich
parent 175a31e491
commit e219e495bc
3 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2015-11-05 Ilya Enkovich <enkovich.gnu@gmail.com>
* targhooks.c (default_get_mask_mode): Use BLKmode in
case target doesn't support required vector mode.
* stor-layout.c (layout_type); Check for BLKmode.
2015-11-04 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>

View File

@ -2174,7 +2174,8 @@ layout_type (tree type)
TYPE_SATURATING (type) = TYPE_SATURATING (TREE_TYPE (type));
TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TREE_TYPE (type));
/* Several boolean vector elements may fit in a single unit. */
if (VECTOR_BOOLEAN_TYPE_P (type))
if (VECTOR_BOOLEAN_TYPE_P (type)
&& type->type_common.mode != BLKmode)
TYPE_SIZE_UNIT (type)
= size_int (GET_MODE_SIZE (type->type_common.mode));
else

View File

@ -1087,10 +1087,16 @@ default_get_mask_mode (unsigned nunits, unsigned vector_size)
unsigned elem_size = vector_size / nunits;
machine_mode elem_mode
= smallest_mode_for_size (elem_size * BITS_PER_UNIT, MODE_INT);
machine_mode vector_mode;
gcc_assert (elem_size * nunits == vector_size);
return mode_for_vector (elem_mode, nunits);
vector_mode = mode_for_vector (elem_mode, nunits);
if (VECTOR_MODE_P (vector_mode)
&& !targetm.vector_mode_supported_p (vector_mode))
vector_mode = BLKmode;
return vector_mode;
}
/* By default, the cost model accumulates three separate costs (prologue,