expr.c (do_store_flag): Expand vector comparison as VEC_COND_EXPR if...

gcc/

	* expr.c (do_store_flag): Expand vector comparison as
	VEC_COND_EXPR if vector comparison is not supported
	by target.

gcc/testsuite/

	* gcc.dg/pr68286.c: New test.

From-SVN: r230238
This commit is contained in:
Ilya Enkovich 2015-11-12 11:38:24 +00:00 committed by Ilya Enkovich
parent e9ea8f9e56
commit 3095f7c6eb
4 changed files with 29 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2015-11-12 Ilya Enkovich <enkovich.gnu@gmail.com>
* expr.c (do_store_flag): Expand vector comparison as
VEC_COND_EXPR if vector comparison is not supported
by target.
2015-11-12 Renlin Li <renlin.li@arm.com>
* config/arm/arm.md (addsi3_compare_op2): Make the order of

View file

@ -11128,7 +11128,8 @@ do_store_flag (sepops ops, rtx target, machine_mode mode)
if (TREE_CODE (ops->type) == VECTOR_TYPE)
{
tree ifexp = build2 (ops->code, ops->type, arg0, arg1);
if (VECTOR_BOOLEAN_TYPE_P (ops->type))
if (VECTOR_BOOLEAN_TYPE_P (ops->type)
&& expand_vec_cmp_expr_p (TREE_TYPE (arg0), ops->type))
return expand_vec_cmp_expr (ops->type, ifexp, target);
else
{

View file

@ -1,3 +1,7 @@
2015-11-12 Ilya Enkovich <enkovich.gnu@gmail.com>
* gcc.dg/pr68286.c: New test.
2015-11-12 Christian Bruel <christian.bruel@st.com>
* gcc.target/arm/mmx-1.c: Adjust for unified asm.

View file

@ -0,0 +1,17 @@
/* PR target/68286 */
/* { dg-do compile } */
/* { dg-options "-O3" } */
int a, b, c;
int fn1 ()
{
int d[] = {0};
for (; c; c++)
{
float e = c;
if (e)
d[0]++;
}
b = d[0];
return a;
}