On Sun, 23 Nov 2014, Chen Gang wrote: > + gcc_assert (wi::fits_to_tree_p(value, integer_type_node));
Watch formatting: space before '(' in the wi::fits_to_tree_p call. Applies elsewhere in this patch as well. When making such an interface change, (a) you should update the comment on builtin_define_with_int_value to explain the new interface, and (b) you should check existing callers to make sure their values are indeed in range, and describe the check you did. In fact, -fabi-version=0 results in __GXX_ABI_VERSION being defined to 999999 using builtin_define_with_int_value. That's out of range of int on targets with 16-bit int. So that indicates against requiring the value to be within range of int. It might however be OK to require the value to be within range of target long. > + if (value >= 0) > + { > + sprintf (buf, "%s="HOST_WIDE_INT_PRINT_DEC"%s", > + macro, value, > + value <= HOST_INT_MAX > + ? "" > + : value <= HOST_LONG_MAX > + ? "L" : "LL"); Limits on the host's int and long are completely irrelevant here. The question is the target's int and long, not the host's - and consistency indicates checking with wi::fits_to_tree_p (value, integer_type_node) if the assertion checked with long_integer_type_node. -- Joseph S. Myers jos...@codesourcery.com