FreeBSD/contrib/gcc/c-common.c
/* True if vector types T1 and T2 can be converted to each other
   without an explicit cast.  If EMIT_LAX_NOTE is true, and T1 and T2
   can only be converted with -flax-vector-conversions yet that is not
   in effect, emit a note telling the user about that option if such
   a note has not previously been emitted.  */
True if vector types T1 and T2 can be converted to each other
without an explicit cast.  If EMIT_LAX_NOTE is true, and T1 and T2
can only be converted with -flax-vector-conversions yet that is not
in effect, emit a note telling the user about that option if such
a note has not previously been emitted.
True if vector types T1 and T2 can be converted to each other without an explicit cast . If EMIT_LAX_NOTE is true and T1 and T2 can only be converted with - flax - vector - conversions yet that is not in effect emit a note telling the user about that option if such a note has not previously been emitted .
bool
vector_types_convertible_p (tree t1, tree t2, bool emit_lax_note)
{
  static bool emitted_lax_note = false;
  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;
  if (TYPE_VECTOR_SUBPARTS (t1) == TYPE_VECTOR_SUBPARTS (t2)
      && comptypes (TREE_TYPE (t1), TREE_TYPE (t2)))
    return true;
  if (emit_lax_note && !emitted_lax_note)
    {
      emitted_lax_note = true;
      inform ("use -flax-vector-conversions to permit "
              "conversions between vectors with differing "
              "element types or numbers of subparts");
    }
  return false;
}
bool vector_types_convertible_p ( tree t1 , tree t2 , bool emit_lax_note ) { static bool emitted_lax_note = false ; 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 ; if ( TYPE_VECTOR_SUBPARTS ( t1 ) == TYPE_VECTOR_SUBPARTS ( t2 ) && comptypes ( TREE_TYPE ( t1 ) , TREE_TYPE ( t2 ) ) ) return true ; if ( emit_lax_note && ! emitted_lax_note ) { emitted_lax_note = true ; inform ( " " " " " " ) ; } return false ; }
True if vector types T1 and T2 can be converted to each other
without an explicit cast.
True if vector types T1 and T2 can be converted to each other without an explicit cast .