From: Ian Lance Taylor Date: Wed, 8 Jun 2011 18:56:00 +0000 (+0000) Subject: Correct type size comparison. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2427150138deb7c8efff398b3d9b1915021efd44;p=gcc.git Correct type size comparison. From-SVN: r174814 --- diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 10618759af4..5dda7916196 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -754,8 +754,13 @@ Expression::check_bounds(tree val, tree bound_type, tree sofar, ret = NULL_TREE; } - if ((TYPE_UNSIGNED(val_type) && !TYPE_UNSIGNED(bound_type)) - || TYPE_SIZE(val_type) > TYPE_SIZE(bound_type)) + HOST_WIDE_INT val_type_size = int_size_in_bytes(val_type); + HOST_WIDE_INT bound_type_size = int_size_in_bytes(bound_type); + go_assert(val_type_size != -1 && bound_type_size != -1); + if (val_type_size > bound_type_size + || (val_type_size == bound_type_size + && TYPE_UNSIGNED(val_type) + && !TYPE_UNSIGNED(bound_type))) { tree max = TYPE_MAX_VALUE(bound_type); tree big = fold_build2_loc(loc, GT_EXPR, boolean_type_node, val,