On Wed, 26 Nov 2014, Chen Gang wrote: > + gcc_assert (wi::fits_to_tree_p (value, char_type_node) > + || wi::fits_to_tree_p (value, short_integer_type_node) > + || wi::fits_to_tree_p (value, integer_type_node) > + || wi::fits_to_tree_p (value, long_integer_type_node) > + || wi::fits_to_tree_p (value, long_long_integer_type_node));
It doesn't make sense to check for char or short, since you can't write a constant of one of those types. And it doesn't make sense to check for int or long when checking for long long, as the ranges of int and long are subsets of that of long long. So just check long long here. > + buf = (char *) alloca (strlen (macro) + vlen + extra); > + > + sprintf (buf, "%s=%s"HOST_WIDE_INT_PRINT_DEC"%s%s", > + macro, > + value < 0 ? "(" : "", > + value, > + wi::fits_to_tree_p (value, char_type_node) > + || wi::fits_to_tree_p (value, short_integer_type_node) > + || wi::fits_to_tree_p (value, integer_type_node) No need to check for char or short here. -- Joseph S. Myers jos...@codesourcery.com