c-common.c (vector_types_convertible_p): Treat opaque types as always convertible if they have the same size...

* c-common.c (vector_types_convertible_p): Treat opaque types as
	always convertible if they have the same size, but not otherwise.

From-SVN: r120688
This commit is contained in:
Joseph Myers 2007-01-11 23:14:51 +00:00 committed by Joseph Myers
parent 6e63e24060
commit 14e765da4a
2 changed files with 17 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2007-01-11 Joseph Myers <joseph@codesourcery.com>
* c-common.c (vector_types_convertible_p): Treat opaque types as
always convertible if they have the same size, but not otherwise.
2007-01-11 Steven Bosscher <steven@gcc.gnu.org>
* ifcvt.c (struct noce_if_info): Add comments to the fields.

View file

@ -1091,14 +1091,18 @@ bool
vector_types_convertible_p (tree t1, tree t2, bool emit_lax_note)
{
static bool emitted_lax_note = false;
bool convertible_lax =
targetm.vector_opaque_p (t1)
|| targetm.vector_opaque_p (t2)
|| (tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))
&& (TREE_CODE (TREE_TYPE (t1)) != REAL_TYPE ||
TYPE_PRECISION (t1) == TYPE_PRECISION (t2))
&& INTEGRAL_TYPE_P (TREE_TYPE (t1))
== INTEGRAL_TYPE_P (TREE_TYPE (t2)));
bool convertible_lax;
if ((targetm.vector_opaque_p (t1) || targetm.vector_opaque_p (t2))
&& tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2)))
return true;
convertible_lax =
(tree_int_cst_equal (TYPE_SIZE (t1), TYPE_SIZE (t2))
&& (TREE_CODE (TREE_TYPE (t1)) != REAL_TYPE ||
TYPE_PRECISION (t1) == TYPE_PRECISION (t2))
&& (INTEGRAL_TYPE_P (TREE_TYPE (t1))
== INTEGRAL_TYPE_P (TREE_TYPE (t2))));
if (!convertible_lax || flag_lax_vector_conversions)
return convertible_lax;