diff mbox

[10/10] Make tree_to_uhwi return unsigned

Message ID 87fvqwsclb.fsf@talisman.default
State New
Headers show

Commit Message

Richard Sandiford Nov. 16, 2013, 1:25 p.m. UTC
This is probably the only non-obvious part of the series.  I went through
all callers to tree_to_uhwi to see whether they were used in a context
where signedness mattered.  If so, I tried to adjust the casting to match.

This mostly meant removing casts to unsigned types.  There are a couple
of cases where I added casts to HOST_WIDE_INT though, to mimic the old
tree_low_cst behaviour:

- In cfgexpand.c and trans-mem.c, where we're comparing the value
  with an int PARAM_VALUE.  The test isn't watertight since any
  unsigned constant > HOST_WIDE_INT_MAX is going to be accepted.
  That's a preexisting problem though and it can be fixed more
  easily with wi:: routines.  Until then this preserves the current
  behaviour.

- In the AArch32/64 and powerpc ABI handling.  Here too "count"
  is an int and is probably not safe for large values anyway; e.g.:

	count *= (1 + tree_to_uhwi (TYPE_MAX_VALUE (index))
		      - tree_to_uhwi (TYPE_MIN_VALUE (index)));

  is done without overflow checking.  This too is easier to fix
  with wi::, so I've just kept it as a signed comparison for now.

Thanks,
Richard


gcc/c-family/
	* c-common.c (convert_vector_to_pointer_for_subscript): Remove
	cast to unsigned type.

gcc/
	* tree.h (tree_to_uhwi): Return an unsigned HOST_WIDE_INT.
	* tree.c (tree_to_uhwi): Return an unsigned HOST_WIDE_INT.
	(tree_ctz): Remove cast to unsigned type.
	* builtins.c (fold_builtin_memory_op): Likewise.
	* dwarf2out.c (descr_info_loc): Likewise.
	* godump.c (go_output_typedef): Likewise.
	* omp-low.c (expand_omp_simd): Likewise.
	* stor-layout.c (excess_unit_span): Likewise.
	* tree-object-size.c (addr_object_size): Likewise.
	* tree-sra.c (analyze_all_variable_accesses): Likewise.
	* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
	(simplify_rotate): Likewise.
	* tree-ssa-strlen.c (adjust_last_stmt, handle_builtin_memcpy)
	(handle_pointer_plus): Likewise.
	* tree-switch-conversion.c (check_range): Likewise.
	* tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
	* tsan.c (instrument_builtin_call): Likewise.
	* cfgexpand.c (defer_stack_allocation): Add cast to HOST_WIDE_INT.
	* trans-mem.c (tm_log_add): Likewise.
	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
	* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
	* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
	* config/mips/mips.c (r10k_safe_mem_expr_p): Make offset unsigned.

Comments

Richard Biener Nov. 18, 2013, 10:56 a.m. UTC | #1
On Sat, Nov 16, 2013 at 2:25 PM, Richard Sandiford
<rdsandiford@googlemail.com> wrote:
> This is probably the only non-obvious part of the series.  I went through
> all callers to tree_to_uhwi to see whether they were used in a context
> where signedness mattered.  If so, I tried to adjust the casting to match.
>
> This mostly meant removing casts to unsigned types.  There are a couple
> of cases where I added casts to HOST_WIDE_INT though, to mimic the old
> tree_low_cst behaviour:
>
> - In cfgexpand.c and trans-mem.c, where we're comparing the value
>   with an int PARAM_VALUE.  The test isn't watertight since any
>   unsigned constant > HOST_WIDE_INT_MAX is going to be accepted.
>   That's a preexisting problem though and it can be fixed more
>   easily with wi:: routines.  Until then this preserves the current
>   behaviour.
>
> - In the AArch32/64 and powerpc ABI handling.  Here too "count"
>   is an int and is probably not safe for large values anyway; e.g.:
>
>         count *= (1 + tree_to_uhwi (TYPE_MAX_VALUE (index))
>                       - tree_to_uhwi (TYPE_MIN_VALUE (index)));
>
>   is done without overflow checking.  This too is easier to fix
>   with wi::, so I've just kept it as a signed comparison for now.

Ok.

Thanks,
Richard.

> Thanks,
> Richard
>
>
> gcc/c-family/
>         * c-common.c (convert_vector_to_pointer_for_subscript): Remove
>         cast to unsigned type.
>
> gcc/
>         * tree.h (tree_to_uhwi): Return an unsigned HOST_WIDE_INT.
>         * tree.c (tree_to_uhwi): Return an unsigned HOST_WIDE_INT.
>         (tree_ctz): Remove cast to unsigned type.
>         * builtins.c (fold_builtin_memory_op): Likewise.
>         * dwarf2out.c (descr_info_loc): Likewise.
>         * godump.c (go_output_typedef): Likewise.
>         * omp-low.c (expand_omp_simd): Likewise.
>         * stor-layout.c (excess_unit_span): Likewise.
>         * tree-object-size.c (addr_object_size): Likewise.
>         * tree-sra.c (analyze_all_variable_accesses): Likewise.
>         * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
>         (simplify_rotate): Likewise.
>         * tree-ssa-strlen.c (adjust_last_stmt, handle_builtin_memcpy)
>         (handle_pointer_plus): Likewise.
>         * tree-switch-conversion.c (check_range): Likewise.
>         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
>         * tsan.c (instrument_builtin_call): Likewise.
>         * cfgexpand.c (defer_stack_allocation): Add cast to HOST_WIDE_INT.
>         * trans-mem.c (tm_log_add): Likewise.
>         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
>         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
>         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
>         * config/mips/mips.c (r10k_safe_mem_expr_p): Make offset unsigned.
>
> Index: gcc/c-family/c-common.c
> ===================================================================
> --- gcc/c-family/c-common.c     2013-11-16 10:13:53.825800713 +0000
> +++ gcc/c-family/c-common.c     2013-11-16 10:14:40.373263297 +0000
> @@ -11702,8 +11702,7 @@ convert_vector_to_pointer_for_subscript
>
>        if (TREE_CODE (index) == INTEGER_CST)
>          if (!tree_fits_uhwi_p (index)
> -            || ((unsigned HOST_WIDE_INT) tree_to_uhwi (index)
> -               >= TYPE_VECTOR_SUBPARTS (type)))
> +            || tree_to_uhwi (index) >= TYPE_VECTOR_SUBPARTS (type))
>            warning_at (loc, OPT_Warray_bounds, "index value is out of bound");
>
>        c_common_mark_addressable_vec (*vecp);
> Index: gcc/tree.h
> ===================================================================
> --- gcc/tree.h  2013-11-16 10:14:00.618868694 +0000
> +++ gcc/tree.h  2013-11-16 10:14:40.488264431 +0000
> @@ -3665,7 +3665,7 @@ extern bool tree_fits_uhwi_p (const_tree
>  #endif
>    ;
>  extern HOST_WIDE_INT tree_to_shwi (const_tree);
> -extern HOST_WIDE_INT tree_to_uhwi (const_tree);
> +extern unsigned HOST_WIDE_INT tree_to_uhwi (const_tree);
>  #if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
>  extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
>  tree_to_shwi (const_tree t)
> @@ -3674,7 +3674,7 @@ tree_to_shwi (const_tree t)
>    return TREE_INT_CST_LOW (t);
>  }
>
> -extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
> +extern inline __attribute__ ((__gnu_inline__)) unsigned HOST_WIDE_INT
>  tree_to_uhwi (const_tree t)
>  {
>    gcc_assert (tree_fits_uhwi_p (t));
> Index: gcc/tree.c
> ===================================================================
> --- gcc/tree.c  2013-11-16 10:14:00.604868554 +0000
> +++ gcc/tree.c  2013-11-16 10:14:40.488264431 +0000
> @@ -2211,8 +2211,7 @@ tree_ctz (const_tree expr)
>      case LSHIFT_EXPR:
>        ret1 = tree_ctz (TREE_OPERAND (expr, 0));
>        if (tree_fits_uhwi_p (TREE_OPERAND (expr, 1))
> -         && ((unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (expr, 1))
> -             < (unsigned HOST_WIDE_INT) prec))
> +         && (tree_to_uhwi (TREE_OPERAND (expr, 1)) < prec))
>         {
>           ret2 = tree_to_uhwi (TREE_OPERAND (expr, 1));
>           return MIN (ret1 + ret2, prec);
> @@ -2220,8 +2219,7 @@ tree_ctz (const_tree expr)
>        return ret1;
>      case RSHIFT_EXPR:
>        if (tree_fits_uhwi_p (TREE_OPERAND (expr, 1))
> -         && ((unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (expr, 1))
> -             < (unsigned HOST_WIDE_INT) prec))
> +         && (tree_to_uhwi (TREE_OPERAND (expr, 1)) < prec))
>         {
>           ret1 = tree_ctz (TREE_OPERAND (expr, 0));
>           ret2 = tree_to_uhwi (TREE_OPERAND (expr, 1));
> @@ -7011,7 +7009,7 @@ tree_to_shwi (const_tree t)
>     TYPE_UNSIGNED) fits in an unsigned HOST_WIDE_INT.  Return that
>     HOST_WIDE_INT.  */
>
> -HOST_WIDE_INT
> +unsigned HOST_WIDE_INT
>  tree_to_uhwi (const_tree t)
>  {
>    gcc_assert (tree_fits_uhwi_p (t));
> Index: gcc/builtins.c
> ===================================================================
> --- gcc/builtins.c      2013-11-16 09:59:36.224612331 +0000
> +++ gcc/builtins.c      2013-11-16 10:14:40.370263268 +0000
> @@ -8728,7 +8728,7 @@ fold_builtin_memory_op (location_t loc,
>           if (readonly_data_expr (src)
>               || (tree_fits_uhwi_p (len)
>                   && (MIN (src_align, dest_align) / BITS_PER_UNIT
> -                     >= (unsigned HOST_WIDE_INT) tree_to_uhwi (len))))
> +                     >= tree_to_uhwi (len))))
>             {
>               tree fn = builtin_decl_implicit (BUILT_IN_MEMCPY);
>               if (!fn)
> Index: gcc/dwarf2out.c
> ===================================================================
> --- gcc/dwarf2out.c     2013-11-16 09:59:36.839617357 +0000
> +++ gcc/dwarf2out.c     2013-11-16 10:14:40.480264352 +0000
> @@ -17073,8 +17073,7 @@ descr_info_loc (tree val, tree base_decl
>      case POINTER_PLUS_EXPR:
>      case PLUS_EXPR:
>        if (tree_fits_uhwi_p (TREE_OPERAND (val, 1))
> -         && (unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (val, 1))
> -            < 16384)
> +         && tree_to_uhwi (TREE_OPERAND (val, 1)) < 16384)
>         {
>           loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl);
>           if (!loc)
> Index: gcc/godump.c
> ===================================================================
> --- gcc/godump.c        2013-11-16 09:59:36.904617888 +0000
> +++ gcc/godump.c        2013-11-16 10:14:40.481264362 +0000
> @@ -986,8 +986,7 @@ go_output_typedef (struct godump_contain
>                      tree_to_shwi (TREE_VALUE (element)));
>           else if (tree_fits_uhwi_p (TREE_VALUE (element)))
>             snprintf (buf, sizeof buf, HOST_WIDE_INT_PRINT_UNSIGNED,
> -                    ((unsigned HOST_WIDE_INT)
> -                     tree_to_uhwi (TREE_VALUE (element))));
> +                     tree_to_uhwi (TREE_VALUE (element)));
>           else
>             snprintf (buf, sizeof buf, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
>                      ((unsigned HOST_WIDE_INT)
> Index: gcc/omp-low.c
> ===================================================================
> --- gcc/omp-low.c       2013-11-16 09:59:36.999618664 +0000
> +++ gcc/omp-low.c       2013-11-16 10:14:40.482264372 +0000
> @@ -6769,8 +6769,7 @@ expand_omp_simd (struct omp_region *regi
>         {
>           safelen = OMP_CLAUSE_SAFELEN_EXPR (safelen);
>           if (!tree_fits_uhwi_p (safelen)
> -             || (unsigned HOST_WIDE_INT) tree_to_uhwi (safelen)
> -                > INT_MAX)
> +             || tree_to_uhwi (safelen) > INT_MAX)
>             loop->safelen = INT_MAX;
>           else
>             loop->safelen = tree_to_uhwi (safelen);
> Index: gcc/stor-layout.c
> ===================================================================
> --- gcc/stor-layout.c   2013-11-16 09:59:37.020618836 +0000
> +++ gcc/stor-layout.c   2013-11-16 10:14:40.483264382 +0000
> @@ -1053,8 +1053,7 @@ excess_unit_span (HOST_WIDE_INT byte_off
>
>    offset = offset % align;
>    return ((offset + size + align - 1) / align
> -         > ((unsigned HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
> -            / align));
> +         > tree_to_uhwi (TYPE_SIZE (type)) / align);
>  }
>  #endif
>
> Index: gcc/tree-object-size.c
> ===================================================================
> --- gcc/tree-object-size.c      2013-11-16 09:59:37.038618983 +0000
> +++ gcc/tree-object-size.c      2013-11-16 10:14:40.484264392 +0000
> @@ -210,15 +210,13 @@ addr_object_size (struct object_size_inf
>    else if (pt_var
>            && DECL_P (pt_var)
>            && tree_fits_uhwi_p (DECL_SIZE_UNIT (pt_var))
> -          && (unsigned HOST_WIDE_INT)
> -               tree_to_uhwi (DECL_SIZE_UNIT (pt_var)) < offset_limit)
> +          && tree_to_uhwi (DECL_SIZE_UNIT (pt_var)) < offset_limit)
>      pt_var_size = DECL_SIZE_UNIT (pt_var);
>    else if (pt_var
>            && TREE_CODE (pt_var) == STRING_CST
>            && TYPE_SIZE_UNIT (TREE_TYPE (pt_var))
>            && tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
> -          && (unsigned HOST_WIDE_INT)
> -             tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
> +          && tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
>               < offset_limit)
>      pt_var_size = TYPE_SIZE_UNIT (TREE_TYPE (pt_var));
>    else
> Index: gcc/tree-sra.c
> ===================================================================
> --- gcc/tree-sra.c      2013-11-16 09:59:37.055619122 +0000
> +++ gcc/tree-sra.c      2013-11-16 10:14:40.484264392 +0000
> @@ -2488,7 +2488,7 @@ analyze_all_variable_accesses (void)
>         if (TREE_CODE (var) == VAR_DECL
>             && type_consists_of_records_p (TREE_TYPE (var)))
>           {
> -           if ((unsigned) tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var)))
> +           if (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var)))
>                 <= max_total_scalarization_size)
>               {
>                 completely_scalarize_var (var);
> Index: gcc/tree-ssa-forwprop.c
> ===================================================================
> --- gcc/tree-ssa-forwprop.c     2013-11-16 09:59:37.082619342 +0000
> +++ gcc/tree-ssa-forwprop.c     2013-11-16 10:14:40.485264402 +0000
> @@ -1601,7 +1601,7 @@ simplify_builtin_call (gimple_stmt_itera
>              as the new memcpy length, if it is too big, bail out.  */
>           src_len = tree_to_uhwi (diff);
>           src_len += tree_to_uhwi (len2);
> -         if (src_len < (unsigned HOST_WIDE_INT) tree_to_uhwi (len1))
> +         if (src_len < tree_to_uhwi (len1))
>             src_len = tree_to_uhwi (len1);
>           if (src_len > 1024)
>             break;
> @@ -2319,7 +2319,7 @@ simplify_rotate (gimple_stmt_iterator *g
>    /* CNT1 + CNT2 == B case above.  */
>    if (tree_fits_uhwi_p (def_arg2[0])
>        && tree_fits_uhwi_p (def_arg2[1])
> -      && (unsigned HOST_WIDE_INT) tree_to_uhwi (def_arg2[0])
> +      && tree_to_uhwi (def_arg2[0])
>          + tree_to_uhwi (def_arg2[1]) == TYPE_PRECISION (rtype))
>      rotcnt = def_arg2[0];
>    else if (TREE_CODE (def_arg2[0]) != SSA_NAME
> Index: gcc/tree-ssa-strlen.c
> ===================================================================
> --- gcc/tree-ssa-strlen.c       2013-11-16 09:59:37.129619727 +0000
> +++ gcc/tree-ssa-strlen.c       2013-11-16 10:14:40.485264402 +0000
> @@ -850,12 +850,11 @@ adjust_last_stmt (strinfo si, gimple stm
>      {
>        if (!tree_fits_uhwi_p (last.len)
>           || integer_zerop (len)
> -         || (unsigned HOST_WIDE_INT) tree_to_uhwi (len)
> -            != (unsigned HOST_WIDE_INT) tree_to_uhwi (last.len) + 1)
> +         || tree_to_uhwi (len) != tree_to_uhwi (last.len) + 1)
>         return;
>        /* Don't adjust the length if it is divisible by 4, it is more efficient
>          to store the extra '\0' in that case.  */
> -      if ((((unsigned HOST_WIDE_INT) tree_to_uhwi (len)) & 3) == 0)
> +      if ((tree_to_uhwi (len) & 3) == 0)
>         return;
>      }
>    else if (TREE_CODE (len) == SSA_NAME)
> @@ -1337,8 +1336,7 @@ handle_builtin_memcpy (enum built_in_fun
>        /* Handle memcpy (x, "abcd", 5) or
>          memcpy (x, "abc\0uvw", 7).  */
>        if (!tree_fits_uhwi_p (len)
> -         || (unsigned HOST_WIDE_INT) tree_to_uhwi (len)
> -            <= (unsigned HOST_WIDE_INT) ~idx)
> +         || tree_to_uhwi (len) <= (unsigned HOST_WIDE_INT) ~idx)
>         return;
>      }
>
> @@ -1627,8 +1625,7 @@ handle_pointer_plus (gimple_stmt_iterato
>      {
>        tree off = gimple_assign_rhs2 (stmt);
>        if (tree_fits_uhwi_p (off)
> -         && (unsigned HOST_WIDE_INT) tree_to_uhwi (off)
> -            <= (unsigned HOST_WIDE_INT) ~idx)
> +         && tree_to_uhwi (off) <= (unsigned HOST_WIDE_INT) ~idx)
>         ssa_ver_to_stridx[SSA_NAME_VERSION (lhs)]
>             = ~(~idx - (int) tree_to_uhwi (off));
>        return;
> Index: gcc/tree-switch-conversion.c
> ===================================================================
> --- gcc/tree-switch-conversion.c        2013-11-16 10:13:53.897801435 +0000
> +++ gcc/tree-switch-conversion.c        2013-11-16 10:14:40.486264412 +0000
> @@ -701,7 +701,7 @@ check_range (struct switch_conv_info *in
>        return false;
>      }
>
> -  if ((unsigned HOST_WIDE_INT) tree_to_uhwi (info->range_size)
> +  if (tree_to_uhwi (info->range_size)
>        > ((unsigned) info->count * SWITCH_CONVERSION_BRANCH_RATIO))
>      {
>        info->reason = "the maximum range-branch ratio exceeded";
> Index: gcc/tree-vect-patterns.c
> ===================================================================
> --- gcc/tree-vect-patterns.c    2013-11-16 09:59:37.170620062 +0000
> +++ gcc/tree-vect-patterns.c    2013-11-16 10:14:40.486264412 +0000
> @@ -1636,8 +1636,7 @@ vect_recog_rotate_pattern (vec<gimple> *
>    if (TREE_CODE (def) == INTEGER_CST)
>      {
>        if (!tree_fits_uhwi_p (def)
> -         || (unsigned HOST_WIDE_INT) tree_to_uhwi (def)
> -            >= GET_MODE_PRECISION (TYPE_MODE (type))
> +         || tree_to_uhwi (def) >= GET_MODE_PRECISION (TYPE_MODE (type))
>           || integer_zerop (def))
>         return NULL;
>        def2 = build_int_cst (stype,
> Index: gcc/tsan.c
> ===================================================================
> --- gcc/tsan.c  2013-11-16 09:59:37.212620405 +0000
> +++ gcc/tsan.c  2013-11-16 10:14:40.489264441 +0000
> @@ -448,8 +448,7 @@ instrument_builtin_call (gimple_stmt_ite
>           case fetch_op:
>             last_arg = gimple_call_arg (stmt, num - 1);
>             if (!tree_fits_uhwi_p (last_arg)
> -               || (unsigned HOST_WIDE_INT) tree_to_uhwi (last_arg)
> -                  > MEMMODEL_SEQ_CST)
> +               || tree_to_uhwi (last_arg) > MEMMODEL_SEQ_CST)
>               return;
>             gimple_call_set_fndecl (stmt, decl);
>             update_stmt (stmt);
> @@ -520,12 +519,10 @@ instrument_builtin_call (gimple_stmt_ite
>             for (j = 0; j < 6; j++)
>               args[j] = gimple_call_arg (stmt, j);
>             if (!tree_fits_uhwi_p (args[4])
> -               || (unsigned HOST_WIDE_INT) tree_to_uhwi (args[4])
> -                  > MEMMODEL_SEQ_CST)
> +               || tree_to_uhwi (args[4]) > MEMMODEL_SEQ_CST)
>               return;
>             if (!tree_fits_uhwi_p (args[5])
> -               || (unsigned HOST_WIDE_INT) tree_to_uhwi (args[5])
> -                  > MEMMODEL_SEQ_CST)
> +               || tree_to_uhwi (args[5]) > MEMMODEL_SEQ_CST)
>               return;
>             update_gimple_call (gsi, decl, 5, args[0], args[1], args[2],
>                                 args[4], args[5]);
> Index: gcc/cfgexpand.c
> ===================================================================
> --- gcc/cfgexpand.c     2013-11-16 09:59:36.390613688 +0000
> +++ gcc/cfgexpand.c     2013-11-16 10:14:40.374263307 +0000
> @@ -1133,7 +1133,7 @@ defer_stack_allocation (tree var, bool t
>    /* Whether the variable is small enough for immediate allocation not to be
>       a problem with regard to the frame size.  */
>    bool smallish
> -    = (tree_to_uhwi (DECL_SIZE_UNIT (var))
> +    = ((HOST_WIDE_INT) tree_to_uhwi (DECL_SIZE_UNIT (var))
>         < PARAM_VALUE (PARAM_MIN_SIZE_FOR_STACK_SHARING));
>
>    /* If stack protection is enabled, *all* stack variables must be deferred,
> Index: gcc/trans-mem.c
> ===================================================================
> --- gcc/trans-mem.c     2013-11-16 09:59:37.027618893 +0000
> +++ gcc/trans-mem.c     2013-11-16 10:14:40.484264392 +0000
> @@ -1104,7 +1104,7 @@ tm_log_add (basic_block entry_block, tre
>           && transaction_invariant_address_p (lp->addr, entry_block)
>           && TYPE_SIZE_UNIT (type) != NULL
>           && tree_fits_uhwi_p (TYPE_SIZE_UNIT (type))
> -         && (tree_to_uhwi (TYPE_SIZE_UNIT (type))
> +         && ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE_UNIT (type))
>               < PARAM_VALUE (PARAM_TM_MAX_AGGREGATE_SIZE))
>           /* We must be able to copy this type normally.  I.e., no
>              special constructors and the like.  */
> Index: gcc/config/aarch64/aarch64.c
> ===================================================================
> --- gcc/config/aarch64/aarch64.c        2013-11-16 09:59:36.442614113 +0000
> +++ gcc/config/aarch64/aarch64.c        2013-11-16 10:14:40.398263544 +0000
> @@ -6041,7 +6041,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -6071,7 +6071,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -6103,7 +6103,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> Index: gcc/config/arm/arm.c
> ===================================================================
> --- gcc/config/arm/arm.c        2013-11-16 09:59:36.512614685 +0000
> +++ gcc/config/arm/arm.c        2013-11-16 10:25:01.702983041 +0000
> @@ -4723,7 +4723,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -4753,7 +4753,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -4785,7 +4785,7 @@ aapcs_vfp_sub_candidate (const_tree type
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> Index: gcc/config/rs6000/rs6000.c
> ===================================================================
> --- gcc/config/rs6000/rs6000.c  2013-11-16 09:59:36.747616605 +0000
> +++ gcc/config/rs6000/rs6000.c  2013-11-16 10:14:40.477264323 +0000
> @@ -8560,7 +8560,7 @@ rs6000_aggregate_candidate (const_tree t
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -8590,7 +8590,7 @@ rs6000_aggregate_candidate (const_tree t
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> @@ -8622,7 +8622,7 @@ rs6000_aggregate_candidate (const_tree t
>
>         /* There must be no padding.  */
>         if (!tree_fits_uhwi_p (TYPE_SIZE (type))
> -           || (tree_to_uhwi (TYPE_SIZE (type))
> +           || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
>                 != count * GET_MODE_BITSIZE (*modep)))
>           return -1;
>
> Index: gcc/config/mips/mips.c
> ===================================================================
> --- gcc/config/mips/mips.c      2013-11-16 09:59:36.672615992 +0000
> +++ gcc/config/mips/mips.c      2013-11-16 10:14:40.463264185 +0000
> @@ -14927,7 +14927,7 @@ r10k_safe_address_p (rtx x, rtx insn)
>     a link-time-constant address.  */
>
>  static bool
> -r10k_safe_mem_expr_p (tree expr, HOST_WIDE_INT offset)
> +r10k_safe_mem_expr_p (tree expr, unsigned HOST_WIDE_INT offset)
>  {
>    HOST_WIDE_INT bitoffset, bitsize;
>    tree inner, var_offset;
> @@ -14940,7 +14940,7 @@ r10k_safe_mem_expr_p (tree expr, HOST_WI
>      return false;
>
>    offset += bitoffset / BITS_PER_UNIT;
> -  return offset >= 0 && offset < tree_to_uhwi (DECL_SIZE_UNIT (inner));
> +  return offset < tree_to_uhwi (DECL_SIZE_UNIT (inner));
>  }
>
>  /* A for_each_rtx callback for which DATA points to the instruction
diff mbox

Patch

Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c	2013-11-16 10:13:53.825800713 +0000
+++ gcc/c-family/c-common.c	2013-11-16 10:14:40.373263297 +0000
@@ -11702,8 +11702,7 @@  convert_vector_to_pointer_for_subscript
 
       if (TREE_CODE (index) == INTEGER_CST)
         if (!tree_fits_uhwi_p (index)
-            || ((unsigned HOST_WIDE_INT) tree_to_uhwi (index)
-               >= TYPE_VECTOR_SUBPARTS (type)))
+            || tree_to_uhwi (index) >= TYPE_VECTOR_SUBPARTS (type))
           warning_at (loc, OPT_Warray_bounds, "index value is out of bound");
 
       c_common_mark_addressable_vec (*vecp);
Index: gcc/tree.h
===================================================================
--- gcc/tree.h	2013-11-16 10:14:00.618868694 +0000
+++ gcc/tree.h	2013-11-16 10:14:40.488264431 +0000
@@ -3665,7 +3665,7 @@  extern bool tree_fits_uhwi_p (const_tree
 #endif
   ;
 extern HOST_WIDE_INT tree_to_shwi (const_tree);
-extern HOST_WIDE_INT tree_to_uhwi (const_tree);
+extern unsigned HOST_WIDE_INT tree_to_uhwi (const_tree);
 #if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
 extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
 tree_to_shwi (const_tree t)
@@ -3674,7 +3674,7 @@  tree_to_shwi (const_tree t)
   return TREE_INT_CST_LOW (t);
 }
 
-extern inline __attribute__ ((__gnu_inline__)) HOST_WIDE_INT
+extern inline __attribute__ ((__gnu_inline__)) unsigned HOST_WIDE_INT
 tree_to_uhwi (const_tree t)
 {
   gcc_assert (tree_fits_uhwi_p (t));
Index: gcc/tree.c
===================================================================
--- gcc/tree.c	2013-11-16 10:14:00.604868554 +0000
+++ gcc/tree.c	2013-11-16 10:14:40.488264431 +0000
@@ -2211,8 +2211,7 @@  tree_ctz (const_tree expr)
     case LSHIFT_EXPR:
       ret1 = tree_ctz (TREE_OPERAND (expr, 0));
       if (tree_fits_uhwi_p (TREE_OPERAND (expr, 1))
-	  && ((unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (expr, 1))
-	      < (unsigned HOST_WIDE_INT) prec))
+	  && (tree_to_uhwi (TREE_OPERAND (expr, 1)) < prec))
 	{
 	  ret2 = tree_to_uhwi (TREE_OPERAND (expr, 1));
 	  return MIN (ret1 + ret2, prec);
@@ -2220,8 +2219,7 @@  tree_ctz (const_tree expr)
       return ret1;
     case RSHIFT_EXPR:
       if (tree_fits_uhwi_p (TREE_OPERAND (expr, 1))
-	  && ((unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (expr, 1))
-	      < (unsigned HOST_WIDE_INT) prec))
+	  && (tree_to_uhwi (TREE_OPERAND (expr, 1)) < prec))
 	{
 	  ret1 = tree_ctz (TREE_OPERAND (expr, 0));
 	  ret2 = tree_to_uhwi (TREE_OPERAND (expr, 1));
@@ -7011,7 +7009,7 @@  tree_to_shwi (const_tree t)
    TYPE_UNSIGNED) fits in an unsigned HOST_WIDE_INT.  Return that
    HOST_WIDE_INT.  */
 
-HOST_WIDE_INT
+unsigned HOST_WIDE_INT
 tree_to_uhwi (const_tree t)
 {
   gcc_assert (tree_fits_uhwi_p (t));
Index: gcc/builtins.c
===================================================================
--- gcc/builtins.c	2013-11-16 09:59:36.224612331 +0000
+++ gcc/builtins.c	2013-11-16 10:14:40.370263268 +0000
@@ -8728,7 +8728,7 @@  fold_builtin_memory_op (location_t loc,
 	  if (readonly_data_expr (src)
 	      || (tree_fits_uhwi_p (len)
 		  && (MIN (src_align, dest_align) / BITS_PER_UNIT
-		      >= (unsigned HOST_WIDE_INT) tree_to_uhwi (len))))
+		      >= tree_to_uhwi (len))))
 	    {
 	      tree fn = builtin_decl_implicit (BUILT_IN_MEMCPY);
 	      if (!fn)
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c	2013-11-16 09:59:36.839617357 +0000
+++ gcc/dwarf2out.c	2013-11-16 10:14:40.480264352 +0000
@@ -17073,8 +17073,7 @@  descr_info_loc (tree val, tree base_decl
     case POINTER_PLUS_EXPR:
     case PLUS_EXPR:
       if (tree_fits_uhwi_p (TREE_OPERAND (val, 1))
-	  && (unsigned HOST_WIDE_INT) tree_to_uhwi (TREE_OPERAND (val, 1))
-	     < 16384)
+	  && tree_to_uhwi (TREE_OPERAND (val, 1)) < 16384)
 	{
 	  loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl);
 	  if (!loc)
Index: gcc/godump.c
===================================================================
--- gcc/godump.c	2013-11-16 09:59:36.904617888 +0000
+++ gcc/godump.c	2013-11-16 10:14:40.481264362 +0000
@@ -986,8 +986,7 @@  go_output_typedef (struct godump_contain
 		     tree_to_shwi (TREE_VALUE (element)));
 	  else if (tree_fits_uhwi_p (TREE_VALUE (element)))
 	    snprintf (buf, sizeof buf, HOST_WIDE_INT_PRINT_UNSIGNED,
-		     ((unsigned HOST_WIDE_INT)
-		      tree_to_uhwi (TREE_VALUE (element))));
+		      tree_to_uhwi (TREE_VALUE (element)));
 	  else
 	    snprintf (buf, sizeof buf, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
 		     ((unsigned HOST_WIDE_INT)
Index: gcc/omp-low.c
===================================================================
--- gcc/omp-low.c	2013-11-16 09:59:36.999618664 +0000
+++ gcc/omp-low.c	2013-11-16 10:14:40.482264372 +0000
@@ -6769,8 +6769,7 @@  expand_omp_simd (struct omp_region *regi
 	{
 	  safelen = OMP_CLAUSE_SAFELEN_EXPR (safelen);
 	  if (!tree_fits_uhwi_p (safelen)
-	      || (unsigned HOST_WIDE_INT) tree_to_uhwi (safelen)
-		 > INT_MAX)
+	      || tree_to_uhwi (safelen) > INT_MAX)
 	    loop->safelen = INT_MAX;
 	  else
 	    loop->safelen = tree_to_uhwi (safelen);
Index: gcc/stor-layout.c
===================================================================
--- gcc/stor-layout.c	2013-11-16 09:59:37.020618836 +0000
+++ gcc/stor-layout.c	2013-11-16 10:14:40.483264382 +0000
@@ -1053,8 +1053,7 @@  excess_unit_span (HOST_WIDE_INT byte_off
 
   offset = offset % align;
   return ((offset + size + align - 1) / align
-	  > ((unsigned HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
-	     / align));
+	  > tree_to_uhwi (TYPE_SIZE (type)) / align);
 }
 #endif
 
Index: gcc/tree-object-size.c
===================================================================
--- gcc/tree-object-size.c	2013-11-16 09:59:37.038618983 +0000
+++ gcc/tree-object-size.c	2013-11-16 10:14:40.484264392 +0000
@@ -210,15 +210,13 @@  addr_object_size (struct object_size_inf
   else if (pt_var
 	   && DECL_P (pt_var)
 	   && tree_fits_uhwi_p (DECL_SIZE_UNIT (pt_var))
-	   && (unsigned HOST_WIDE_INT)
-	        tree_to_uhwi (DECL_SIZE_UNIT (pt_var)) < offset_limit)
+	   && tree_to_uhwi (DECL_SIZE_UNIT (pt_var)) < offset_limit)
     pt_var_size = DECL_SIZE_UNIT (pt_var);
   else if (pt_var
 	   && TREE_CODE (pt_var) == STRING_CST
 	   && TYPE_SIZE_UNIT (TREE_TYPE (pt_var))
 	   && tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
-	   && (unsigned HOST_WIDE_INT)
-	      tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
+	   && tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)))
 	      < offset_limit)
     pt_var_size = TYPE_SIZE_UNIT (TREE_TYPE (pt_var));
   else
Index: gcc/tree-sra.c
===================================================================
--- gcc/tree-sra.c	2013-11-16 09:59:37.055619122 +0000
+++ gcc/tree-sra.c	2013-11-16 10:14:40.484264392 +0000
@@ -2488,7 +2488,7 @@  analyze_all_variable_accesses (void)
 	if (TREE_CODE (var) == VAR_DECL
 	    && type_consists_of_records_p (TREE_TYPE (var)))
 	  {
-	    if ((unsigned) tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var)))
+	    if (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (var)))
 		<= max_total_scalarization_size)
 	      {
 		completely_scalarize_var (var);
Index: gcc/tree-ssa-forwprop.c
===================================================================
--- gcc/tree-ssa-forwprop.c	2013-11-16 09:59:37.082619342 +0000
+++ gcc/tree-ssa-forwprop.c	2013-11-16 10:14:40.485264402 +0000
@@ -1601,7 +1601,7 @@  simplify_builtin_call (gimple_stmt_itera
 	     as the new memcpy length, if it is too big, bail out.  */
 	  src_len = tree_to_uhwi (diff);
 	  src_len += tree_to_uhwi (len2);
-	  if (src_len < (unsigned HOST_WIDE_INT) tree_to_uhwi (len1))
+	  if (src_len < tree_to_uhwi (len1))
 	    src_len = tree_to_uhwi (len1);
 	  if (src_len > 1024)
 	    break;
@@ -2319,7 +2319,7 @@  simplify_rotate (gimple_stmt_iterator *g
   /* CNT1 + CNT2 == B case above.  */
   if (tree_fits_uhwi_p (def_arg2[0])
       && tree_fits_uhwi_p (def_arg2[1])
-      && (unsigned HOST_WIDE_INT) tree_to_uhwi (def_arg2[0])
+      && tree_to_uhwi (def_arg2[0])
 	 + tree_to_uhwi (def_arg2[1]) == TYPE_PRECISION (rtype))
     rotcnt = def_arg2[0];
   else if (TREE_CODE (def_arg2[0]) != SSA_NAME
Index: gcc/tree-ssa-strlen.c
===================================================================
--- gcc/tree-ssa-strlen.c	2013-11-16 09:59:37.129619727 +0000
+++ gcc/tree-ssa-strlen.c	2013-11-16 10:14:40.485264402 +0000
@@ -850,12 +850,11 @@  adjust_last_stmt (strinfo si, gimple stm
     {
       if (!tree_fits_uhwi_p (last.len)
 	  || integer_zerop (len)
-	  || (unsigned HOST_WIDE_INT) tree_to_uhwi (len)
-	     != (unsigned HOST_WIDE_INT) tree_to_uhwi (last.len) + 1)
+	  || tree_to_uhwi (len) != tree_to_uhwi (last.len) + 1)
 	return;
       /* Don't adjust the length if it is divisible by 4, it is more efficient
 	 to store the extra '\0' in that case.  */
-      if ((((unsigned HOST_WIDE_INT) tree_to_uhwi (len)) & 3) == 0)
+      if ((tree_to_uhwi (len) & 3) == 0)
 	return;
     }
   else if (TREE_CODE (len) == SSA_NAME)
@@ -1337,8 +1336,7 @@  handle_builtin_memcpy (enum built_in_fun
       /* Handle memcpy (x, "abcd", 5) or
 	 memcpy (x, "abc\0uvw", 7).  */
       if (!tree_fits_uhwi_p (len)
-	  || (unsigned HOST_WIDE_INT) tree_to_uhwi (len)
-	     <= (unsigned HOST_WIDE_INT) ~idx)
+	  || tree_to_uhwi (len) <= (unsigned HOST_WIDE_INT) ~idx)
 	return;
     }
 
@@ -1627,8 +1625,7 @@  handle_pointer_plus (gimple_stmt_iterato
     {
       tree off = gimple_assign_rhs2 (stmt);
       if (tree_fits_uhwi_p (off)
-	  && (unsigned HOST_WIDE_INT) tree_to_uhwi (off)
-	     <= (unsigned HOST_WIDE_INT) ~idx)
+	  && tree_to_uhwi (off) <= (unsigned HOST_WIDE_INT) ~idx)
 	ssa_ver_to_stridx[SSA_NAME_VERSION (lhs)]
 	    = ~(~idx - (int) tree_to_uhwi (off));
       return;
Index: gcc/tree-switch-conversion.c
===================================================================
--- gcc/tree-switch-conversion.c	2013-11-16 10:13:53.897801435 +0000
+++ gcc/tree-switch-conversion.c	2013-11-16 10:14:40.486264412 +0000
@@ -701,7 +701,7 @@  check_range (struct switch_conv_info *in
       return false;
     }
 
-  if ((unsigned HOST_WIDE_INT) tree_to_uhwi (info->range_size)
+  if (tree_to_uhwi (info->range_size)
       > ((unsigned) info->count * SWITCH_CONVERSION_BRANCH_RATIO))
     {
       info->reason = "the maximum range-branch ratio exceeded";
Index: gcc/tree-vect-patterns.c
===================================================================
--- gcc/tree-vect-patterns.c	2013-11-16 09:59:37.170620062 +0000
+++ gcc/tree-vect-patterns.c	2013-11-16 10:14:40.486264412 +0000
@@ -1636,8 +1636,7 @@  vect_recog_rotate_pattern (vec<gimple> *
   if (TREE_CODE (def) == INTEGER_CST)
     {
       if (!tree_fits_uhwi_p (def)
-	  || (unsigned HOST_WIDE_INT) tree_to_uhwi (def)
-	     >= GET_MODE_PRECISION (TYPE_MODE (type))
+	  || tree_to_uhwi (def) >= GET_MODE_PRECISION (TYPE_MODE (type))
 	  || integer_zerop (def))
 	return NULL;
       def2 = build_int_cst (stype,
Index: gcc/tsan.c
===================================================================
--- gcc/tsan.c	2013-11-16 09:59:37.212620405 +0000
+++ gcc/tsan.c	2013-11-16 10:14:40.489264441 +0000
@@ -448,8 +448,7 @@  instrument_builtin_call (gimple_stmt_ite
 	  case fetch_op:
 	    last_arg = gimple_call_arg (stmt, num - 1);
 	    if (!tree_fits_uhwi_p (last_arg)
-		|| (unsigned HOST_WIDE_INT) tree_to_uhwi (last_arg)
-		   > MEMMODEL_SEQ_CST)
+		|| tree_to_uhwi (last_arg) > MEMMODEL_SEQ_CST)
 	      return;
 	    gimple_call_set_fndecl (stmt, decl);
 	    update_stmt (stmt);
@@ -520,12 +519,10 @@  instrument_builtin_call (gimple_stmt_ite
 	    for (j = 0; j < 6; j++)
 	      args[j] = gimple_call_arg (stmt, j);
 	    if (!tree_fits_uhwi_p (args[4])
-		|| (unsigned HOST_WIDE_INT) tree_to_uhwi (args[4])
-		   > MEMMODEL_SEQ_CST)
+		|| tree_to_uhwi (args[4]) > MEMMODEL_SEQ_CST)
 	      return;
 	    if (!tree_fits_uhwi_p (args[5])
-		|| (unsigned HOST_WIDE_INT) tree_to_uhwi (args[5])
-		   > MEMMODEL_SEQ_CST)
+		|| tree_to_uhwi (args[5]) > MEMMODEL_SEQ_CST)
 	      return;
 	    update_gimple_call (gsi, decl, 5, args[0], args[1], args[2],
 				args[4], args[5]);
Index: gcc/cfgexpand.c
===================================================================
--- gcc/cfgexpand.c	2013-11-16 09:59:36.390613688 +0000
+++ gcc/cfgexpand.c	2013-11-16 10:14:40.374263307 +0000
@@ -1133,7 +1133,7 @@  defer_stack_allocation (tree var, bool t
   /* Whether the variable is small enough for immediate allocation not to be
      a problem with regard to the frame size.  */
   bool smallish
-    = (tree_to_uhwi (DECL_SIZE_UNIT (var))
+    = ((HOST_WIDE_INT) tree_to_uhwi (DECL_SIZE_UNIT (var))
        < PARAM_VALUE (PARAM_MIN_SIZE_FOR_STACK_SHARING));
 
   /* If stack protection is enabled, *all* stack variables must be deferred,
Index: gcc/trans-mem.c
===================================================================
--- gcc/trans-mem.c	2013-11-16 09:59:37.027618893 +0000
+++ gcc/trans-mem.c	2013-11-16 10:14:40.484264392 +0000
@@ -1104,7 +1104,7 @@  tm_log_add (basic_block entry_block, tre
 	  && transaction_invariant_address_p (lp->addr, entry_block)
 	  && TYPE_SIZE_UNIT (type) != NULL
 	  && tree_fits_uhwi_p (TYPE_SIZE_UNIT (type))
-	  && (tree_to_uhwi (TYPE_SIZE_UNIT (type))
+	  && ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE_UNIT (type))
 	      < PARAM_VALUE (PARAM_TM_MAX_AGGREGATE_SIZE))
 	  /* We must be able to copy this type normally.  I.e., no
 	     special constructors and the like.  */
Index: gcc/config/aarch64/aarch64.c
===================================================================
--- gcc/config/aarch64/aarch64.c	2013-11-16 09:59:36.442614113 +0000
+++ gcc/config/aarch64/aarch64.c	2013-11-16 10:14:40.398263544 +0000
@@ -6041,7 +6041,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -6071,7 +6071,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -6103,7 +6103,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c	2013-11-16 09:59:36.512614685 +0000
+++ gcc/config/arm/arm.c	2013-11-16 10:25:01.702983041 +0000
@@ -4723,7 +4723,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -4753,7 +4753,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -4785,7 +4785,7 @@  aapcs_vfp_sub_candidate (const_tree type
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	2013-11-16 09:59:36.747616605 +0000
+++ gcc/config/rs6000/rs6000.c	2013-11-16 10:14:40.477264323 +0000
@@ -8560,7 +8560,7 @@  rs6000_aggregate_candidate (const_tree t
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -8590,7 +8590,7 @@  rs6000_aggregate_candidate (const_tree t
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
@@ -8622,7 +8622,7 @@  rs6000_aggregate_candidate (const_tree t
 
 	/* There must be no padding.  */
 	if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-	    || (tree_to_uhwi (TYPE_SIZE (type))
+	    || ((HOST_WIDE_INT) tree_to_uhwi (TYPE_SIZE (type))
 		!= count * GET_MODE_BITSIZE (*modep)))
 	  return -1;
 
Index: gcc/config/mips/mips.c
===================================================================
--- gcc/config/mips/mips.c	2013-11-16 09:59:36.672615992 +0000
+++ gcc/config/mips/mips.c	2013-11-16 10:14:40.463264185 +0000
@@ -14927,7 +14927,7 @@  r10k_safe_address_p (rtx x, rtx insn)
    a link-time-constant address.  */
 
 static bool
-r10k_safe_mem_expr_p (tree expr, HOST_WIDE_INT offset)
+r10k_safe_mem_expr_p (tree expr, unsigned HOST_WIDE_INT offset)
 {
   HOST_WIDE_INT bitoffset, bitsize;
   tree inner, var_offset;
@@ -14940,7 +14940,7 @@  r10k_safe_mem_expr_p (tree expr, HOST_WI
     return false;
 
   offset += bitoffset / BITS_PER_UNIT;
-  return offset >= 0 && offset < tree_to_uhwi (DECL_SIZE_UNIT (inner));
+  return offset < tree_to_uhwi (DECL_SIZE_UNIT (inner));
 }
 
 /* A for_each_rtx callback for which DATA points to the instruction