Commit 36618528 by Richard Stallman

(common_type): Use TYPE_MAIN_VARIANT when preferring

long int to int (when width is the same).

(check_format): With -Wformat, warn about
printf("%ld", 1) even if sizeof (int) == sizeof (long),
since the code isn't portable.  Similarly for "%d" vs 1L.

(convert_arguments) [PROMOTE_PROTOTYPES]:
With -Wconversion, use unpromoted type to check for signedness changes.

From-SVN: r4935
parent edbc355b
...@@ -231,12 +231,12 @@ common_type (t1, t2) ...@@ -231,12 +231,12 @@ common_type (t1, t2)
/* Same precision. Prefer longs to ints even when same size. */ /* Same precision. Prefer longs to ints even when same size. */
if (t1 == long_unsigned_type_node if (TYPE_MAIN_VARIANT (t1) == long_unsigned_type_node
|| t2 == long_unsigned_type_node) || TYPE_MAIN_VARIANT (t2) == long_unsigned_type_node)
return long_unsigned_type_node; return long_unsigned_type_node;
if (t1 == long_integer_type_node if (TYPE_MAIN_VARIANT (t1) == long_integer_type_node
|| t2 == long_integer_type_node) || TYPE_MAIN_VARIANT (t2) == long_integer_type_node)
{ {
/* But preserve unsignedness from the other type, /* But preserve unsignedness from the other type,
since long cannot hold all the values of an unsigned int. */ since long cannot hold all the values of an unsigned int. */
...@@ -1787,7 +1787,8 @@ check_format (info, params) ...@@ -1787,7 +1787,8 @@ check_format (info, params)
/* Don't warn about differences merely in signedness. */ /* Don't warn about differences merely in signedness. */
&& !(TREE_CODE (wanted_type) == INTEGER_TYPE && !(TREE_CODE (wanted_type) == INTEGER_TYPE
&& TREE_CODE (cur_type) == INTEGER_TYPE && TREE_CODE (cur_type) == INTEGER_TYPE
&& TYPE_PRECISION (wanted_type) == TYPE_PRECISION (cur_type))) && (wanted_type == (TREE_UNSIGNED (wanted_type)
? unsigned_type : signed_type) (cur_type))))
{ {
register char *this; register char *this;
register char *that; register char *that;
...@@ -1998,6 +1999,7 @@ convert_arguments (typelist, values, name, fundecl) ...@@ -1998,6 +1999,7 @@ convert_arguments (typelist, values, name, fundecl)
else else
{ {
tree parmname; tree parmname;
tree type0 = type;
#ifdef PROMOTE_PROTOTYPES #ifdef PROMOTE_PROTOTYPES
/* Rather than truncating and then reextending, /* Rather than truncating and then reextending,
convert directly to int, if that's the type we will want. */ convert directly to int, if that's the type we will want. */
......
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