diff options
author | Ian Lance Taylor <ian@airs.com> | 2005-09-25 03:05:57 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2005-09-25 03:05:57 +0000 |
commit | 1f6f3d15c62ea39da28c60064ffd61e0eb87abc5 (patch) | |
tree | 585707c17b131bfa3305c664f46a1124a7613b50 /gcc | |
parent | 8028abd70df73eb9705ffeb1c5811d535940bfc5 (diff) | |
download | gcc-1f6f3d15c62ea39da28c60064ffd61e0eb87abc5.zip gcc-1f6f3d15c62ea39da28c60064ffd61e0eb87abc5.tar.gz gcc-1f6f3d15c62ea39da28c60064ffd61e0eb87abc5.tar.bz2 |
convert.c (convert_to_integer): Don't test for ENUMERAL_TYPE in NEGATE_EXPR/BIT_NOT_EXPR case.
* convert.c (convert_to_integer): Don't test for ENUMERAL_TYPE in
NEGATE_EXPR/BIT_NOT_EXPR case.
From-SVN: r104615
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/convert.c | 36 |
2 files changed, 17 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 25938ff..49321d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-09-24 Ian Lance Taylor <ian@airs.com> + + * convert.c (convert_to_integer): Don't test for ENUMERAL_TYPE in + NEGATE_EXPR/BIT_NOT_EXPR case. + 2005-09-24 Richard Henderson <rth@redhat.com> * c-common.c (handle_mode_attribute): When not modifying in place, diff --git a/gcc/convert.c b/gcc/convert.c index e5f8dcd..5ddae36 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -620,30 +620,18 @@ convert_to_integer (tree type, tree expr) /* This is not correct for ABS_EXPR, since we must test the sign before truncation. */ { - tree typex = type; - - /* Can't do arithmetic in enumeral types - so use an integer type that will hold the values. */ - if (TREE_CODE (typex) == ENUMERAL_TYPE) - typex = lang_hooks.types.type_for_size - (TYPE_PRECISION (typex), TYPE_UNSIGNED (typex)); - - /* But now perhaps TYPEX is as wide as INPREC. - In that case, do nothing special here. - (Otherwise would recurse infinitely in convert. */ - if (TYPE_PRECISION (typex) != inprec) - { - /* Don't do unsigned arithmetic where signed was wanted, - or vice versa. */ - if (TYPE_UNSIGNED (TREE_TYPE (expr))) - typex = lang_hooks.types.unsigned_type (typex); - else - typex = lang_hooks.types.signed_type (typex); - return convert (type, - fold_build1 (ex_form, typex, - convert (typex, - TREE_OPERAND (expr, 0)))); - } + tree typex; + + /* Don't do unsigned arithmetic where signed was wanted, + or vice versa. */ + if (TYPE_UNSIGNED (TREE_TYPE (expr))) + typex = lang_hooks.types.unsigned_type (type); + else + typex = lang_hooks.types.signed_type (type); + return convert (type, + fold_build1 (ex_form, typex, + convert (typex, + TREE_OPERAND (expr, 0)))); } case NOP_EXPR: |