On Fri, Jan 13, 2017 at 09:15:22AM +0100, Richard Biener wrote: > > @@ -1710,6 +1716,24 @@ dump_generic_node (pretty_printer *pp, t > > print_hex (val, pp_buffer (pp)->digit_buffer); > > pp_string (pp, pp_buffer (pp)->digit_buffer); > > } > > + if ((flags & TDF_GIMPLE) > > + && (POINTER_TYPE_P (TREE_TYPE (node)) > > + || (TYPE_PRECISION (TREE_TYPE (node)) > > + < TYPE_PRECISION (integer_type_node)) > > + || exact_log2 (TYPE_PRECISION (TREE_TYPE (node))) == -1)) > > + { > > + if (TYPE_UNSIGNED (TREE_TYPE (node))) > > + pp_character (pp, 'u'); > > + if (TYPE_PRECISION (TREE_TYPE (node)) > > + == TYPE_PRECISION (unsigned_type_node)) > > + ; > > + else if (TYPE_PRECISION (TREE_TYPE (node)) > > + == TYPE_PRECISION (long_unsigned_type_node)) > > + pp_character (pp, 'l'); > > + else if (TYPE_PRECISION (TREE_TYPE (node)) > > + == TYPE_PRECISION (long_long_unsigned_type_node)) > > + pp_string (pp, "ll"); > > + }
Not sure if I understand this. The outer if condition says that only the sub-int or strange precision or pointer types do that, but then you compare the precisions against long and long long. That will be true only for pointers. Don't you want the u/l/ll/ul/ull suffixes emitted for integers even when they have normal precision and _Literal is not used? Or is that handled somewhere else? Jakub