On Wed, 7 Mar 2012, Richard Guenther wrote:
On Wed, 7 Mar 2012, Michael Matz wrote:
Hi,
On Wed, 7 Mar 2012, Richard Guenther wrote:
FAIL: gcc.dg/tree-ssa/pr31261.c scan-tree-dump-times original return
\\(char\\)
-\\(unsigned char\\) c 31; 1
FAIL: gcc.dg/tree-ssa/pr31261.c scan-tree-dump-times original return
\\(int\\)
\\(12 - \\(unsigned int\\) d\\) 7; 1
because we dump the unsigned type variant differently now. What do
people think - adjust the testcase? Adjust how we pretty-print
these non-standard integer types?
Adjusting the pretty printer would be nice anyway. Those unnamed:35
thingies hurt my eyes. Just printing int17 or uint18 would be perfectly
fine, with special casing of sizes that match the normal C types for
the target in question (so that input 'unsigned char' isn't converted to
'uint8' on one and 'uint16' on another target).
Ok, I'll do that (special-casing some precisions via *_TYPE_SIZE).
I won't touch the unnamed-unsigned-type:35 stuff, for now.
Like so.
Richard.
2012-03-12 Richard Guenther rguent...@suse.de
* tree.c (signed_or_unsigned_type_for): Use
build_nonstandard_integer_type.
(signed_type_for): Adjust documentation.
(unsigned_type_for): Likewise.
* tree-pretty-print.c (dump_generic_node): Use standard names
for non-standard integer types if available.
Index: gcc/tree.c
===
*** gcc/tree.c.orig 2012-03-12 11:11:36.0 +0100
--- gcc/tree.c 2012-03-12 12:25:37.0 +0100
*** widest_int_cst_value (const_tree x)
*** 10197,10228
return val;
}
! /* If TYPE is an integral type, return an equivalent type which is
! unsigned iff UNSIGNEDP is true. If TYPE is not an integral type,
! return TYPE itself. */
tree
signed_or_unsigned_type_for (int unsignedp, tree type)
{
! tree t = type;
! if (POINTER_TYPE_P (type))
! {
! /* If the pointer points to the normal address space, use the
!size_type_node. Otherwise use an appropriate size for the pointer
!based on the named address space it points to. */
! if (!TYPE_ADDR_SPACE (TREE_TYPE (t)))
! t = size_type_node;
! else
! return lang_hooks.types.type_for_size (TYPE_PRECISION (t), unsignedp);
! }
! if (!INTEGRAL_TYPE_P (t) || TYPE_UNSIGNED (t) == unsignedp)
! return t;
! return lang_hooks.types.type_for_size (TYPE_PRECISION (t), unsignedp);
}
! /* Returns unsigned variant of TYPE. */
tree
unsigned_type_for (tree type)
--- 10197,10222
return val;
}
! /* If TYPE is an integral or pointer type, return an integer type with
!the same precision which is unsigned iff UNSIGNEDP is true, or itself
!if TYPE is already an integer type of signedness UNSIGNEDP. */
tree
signed_or_unsigned_type_for (int unsignedp, tree type)
{
! if (TREE_CODE (type) == INTEGER_TYPE TYPE_UNSIGNED (type) == unsignedp)
! return type;
! if (!INTEGRAL_TYPE_P (type)
!!POINTER_TYPE_P (type))
! return NULL_TREE;
! return build_nonstandard_integer_type (TYPE_PRECISION (type), unsignedp);
}
! /* If TYPE is an integral or pointer type, return an integer type with
!the same precision which is unsigned, or itself if TYPE is already an
!unsigned integer type. */
tree
unsigned_type_for (tree type)
*** unsigned_type_for (tree type)
*** 10230,10236
return signed_or_unsigned_type_for (1, type);
}
! /* Returns signed variant of TYPE. */
tree
signed_type_for (tree type)
--- 10224,10232
return signed_or_unsigned_type_for (1, type);
}
! /* If TYPE is an integral or pointer type, return an integer type with
!the same precision which is signed, or itself if TYPE is already a
!signed integer type. */
tree
signed_type_for (tree type)
Index: gcc/tree-pretty-print.c
===
*** gcc/tree-pretty-print.c.orig2012-01-30 14:44:40.0 +0100
--- gcc/tree-pretty-print.c 2012-03-12 12:34:01.0 +0100
*** dump_generic_node (pretty_printer *buffe
*** 723,733
}
else if (TREE_CODE (node) == INTEGER_TYPE)
{
! pp_string (buffer, (TYPE_UNSIGNED (node)
! ? unnamed-unsigned:
! : unnamed-signed:));
! pp_decimal_int (buffer, TYPE_PRECISION (node));
! pp_string (buffer, );
}
else if (TREE_CODE (node) == COMPLEX_TYPE)
{
--- 723,763
}
else if (TREE_CODE (node) == INTEGER_TYPE)
{
! if (TYPE_PRECISION (node) == CHAR_TYPE_SIZE)
! pp_string (buffer, (TYPE_UNSIGNED (node)
!