(convert_for_assignment): When allowing mixing of

signed and unsigned pointers, compare unsigned types not type sizes.

From-SVN: r4580
This commit is contained in:
Richard Stallman 1993-05-27 04:30:54 +00:00
parent fc1565060a
commit 5c73b269e7

View File

@ -4186,11 +4186,7 @@ convert_for_assignment (type, rhs, errtype, fundecl, funname, parmnum)
Meanwhile, the lhs target must have all the qualifiers of the rhs. */ Meanwhile, the lhs target must have all the qualifiers of the rhs. */
if (TYPE_MAIN_VARIANT (ttl) == void_type_node if (TYPE_MAIN_VARIANT (ttl) == void_type_node
|| TYPE_MAIN_VARIANT (ttr) == void_type_node || TYPE_MAIN_VARIANT (ttr) == void_type_node
|| comp_target_types (type, rhstype) || comp_target_types (type, rhstype))
|| (!pedantic /* Unless pedantic, mix signed and unsigned. */
&& TREE_CODE (ttl) == INTEGER_TYPE
&& TREE_CODE (ttr) == INTEGER_TYPE
&& TYPE_PRECISION (ttl) == TYPE_PRECISION (ttr)))
{ {
if (pedantic if (pedantic
&& ((TYPE_MAIN_VARIANT (ttl) == void_type_node && ((TYPE_MAIN_VARIANT (ttl) == void_type_node
@ -4229,8 +4225,11 @@ convert_for_assignment (type, rhs, errtype, fundecl, funname, parmnum)
} }
else if (unsigned_type (TYPE_MAIN_VARIANT (ttl)) else if (unsigned_type (TYPE_MAIN_VARIANT (ttl))
== unsigned_type (TYPE_MAIN_VARIANT (ttr))) == unsigned_type (TYPE_MAIN_VARIANT (ttr)))
warn_for_assignment ("pointer targets in %s differ in signedness", {
get_spelling (errtype), funname, parmnum); if (pedantic)
warn_for_assignment ("pointer targets in %s differ in signedness",
get_spelling (errtype), funname, parmnum);
}
else else
warn_for_assignment ("%s from incompatible pointer type", warn_for_assignment ("%s from incompatible pointer type",
get_spelling (errtype), funname, parmnum); get_spelling (errtype), funname, parmnum);