Commit 153dba6c by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/85077 (V[248][SD]F abs not optimized to)

	PR c++/85077
	* cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
	type call fold to generate VECTOR_CSTs when possible.

	* g++.dg/ext/vector35.C: New test.

From-SVN: r258903
parent a7dea617
2018-03-27 Jakub Jelinek <jakub@redhat.com>
PR c++/85077
* cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
type call fold to generate VECTOR_CSTs when possible.
PR c++/85076
* tree.c (cp_build_reference_type): If to_type is error_mark_node,
return it right away.
......
......@@ -2504,6 +2504,8 @@ cp_fold (tree x)
CONSTRUCTOR_PLACEHOLDER_BOUNDARY (x)
= CONSTRUCTOR_PLACEHOLDER_BOUNDARY (org_x);
}
if (VECTOR_TYPE_P (TREE_TYPE (x)))
x = fold (x);
break;
}
case TREE_VEC:
......
2018-03-27 Jakub Jelinek <jakub@redhat.com>
PR c++/85077
* g++.dg/ext/vector35.C: New test.
PR c++/85061
* g++.dg/ext/builtin-offsetof3.C: New test.
......
// PR c++/85077
// { dg-do compile }
// { dg-options "-Ofast -fdump-tree-forwprop1" }
typedef float V __attribute__((vector_size (4 * sizeof (float))));
typedef double W __attribute__((vector_size (2 * sizeof (double))));
void
foo (V *y)
{
V x = *y;
*y = x < 0 ? -x : x;
}
void
bar (W *y)
{
W x = *y;
*y = x < 0 ? -x : x;
}
// { dg-final { scan-tree-dump-times "ABS_EXPR <" 2 "forwprop1" } }
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