From: Jason Merrill Date: Wed, 22 Oct 2003 02:19:38 +0000 (-0400) Subject: tree.c (get_unwidened): Check TREE_UNSIGNED on the field's type. X-Git-Tag: releases/gcc-3.4.0~2819 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e64a6f2c6e98cc42276be79a712900da33811a36;p=thirdparty%2Fgcc.git tree.c (get_unwidened): Check TREE_UNSIGNED on the field's type. * tree.c (get_unwidened): Check TREE_UNSIGNED on the field's type. (get_narrower): Likewise. From-SVN: r72787 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index afcd8bcb3412..1ec11656e300 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2003-10-21 Jason Merrill + * tree.c (get_unwidened): Check TREE_UNSIGNED on the field's type. + (get_narrower): Likewise. + * stor-layout.c (layout_decl): Do packed field alignment for bit-fields, too. diff --git a/gcc/tree.c b/gcc/tree.c index dd8378e8ec56..7d0258c1fa02 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4105,7 +4105,8 @@ get_unwidened (tree op, tree for_type) { unsigned int innerprec = tree_low_cst (DECL_SIZE (TREE_OPERAND (op, 1)), 1); - int unsignedp = TREE_UNSIGNED (TREE_OPERAND (op, 1)); + int unsignedp = (TREE_UNSIGNED (TREE_OPERAND (op, 1)) + || TREE_UNSIGNED (TREE_TYPE (TREE_OPERAND (op, 1)))); type = (*lang_hooks.types.type_for_size) (innerprec, unsignedp); /* We can get this structure field in the narrowest type it fits in. @@ -4189,8 +4190,9 @@ get_narrower (tree op, int *unsignedp_ptr) { unsigned HOST_WIDE_INT innerprec = tree_low_cst (DECL_SIZE (TREE_OPERAND (op, 1)), 1); - tree type = (*lang_hooks.types.type_for_size) (innerprec, - TREE_UNSIGNED (op)); + int unsignedp = (TREE_UNSIGNED (TREE_OPERAND (op, 1)) + || TREE_UNSIGNED (TREE_TYPE (TREE_OPERAND (op, 1)))); + tree type = (*lang_hooks.types.type_for_size) (innerprec, unsignedp); /* We can get this structure field in a narrower type that fits it, but the resulting extension to its nominal type (a fullword type)