Richard, this comment does not match the code. The code allows type conversions between two integral types and between arbitrary types that happen to *not* be integral. Which semantics did you mean here?
/* Allow conversions between integral types. */
if (INTEGRAL_TYPE_P (type) == INTEGRAL_TYPE_P (TREE_TYPE (op)))
return false;
I'm thinking this should be && not ==.
Thanks.
