From 2427150138deb7c8efff398b3d9b1915021efd44 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 8 Jun 2011 18:56:00 +0000 Subject: [PATCH] Correct type size comparison. From-SVN: r174814 --- gcc/go/gofrontend/expressions.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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, -- 2.30.2