> gcc/
>       * cppbuiltin.c (define_builtin_macros_for_type_sizes): Round
>       pointer size up to a power of two.
>       * defaults.h (DWARF2_ADDR_SIZE): Round up.
>       (POINTER_SIZE_UNITS): New, rounded up value.
>       * dwarf2asm.c (size_of_encoded_value): Use it.
>       (dw2_output_indirect_constant_1): Likewise.
>       * expmed.c (init_expmed_one_conv): We now know the sizes of
>       partial int modes.
>       * loop-iv.c (iv_number_of_iterations): Use precision, not size.
>       * optabs.c (expand_float): Use precision, not size.
>       (expand_fix): Likewise.
>       * simplify-rtx (simplify_unary_operation_1): Likewise.
>       * tree-dfa.c (get_ref_base_and_extent): Likewise.
>       * varasm.c (assemble_addr_to_section): Round up pointer sizes.
>       (default_assemble_integer) Likewise.
>       (dump_tm_clone_pairs): Likewise.
>       * tree-core.c: Adjust comment.

No stor-layout.c listed here but...

> Index: gcc/stor-layout.c
> ===================================================================
> --- gcc/stor-layout.c (revision 211858)
> +++ gcc/stor-layout.c (working copy)
> @@ -2123,13 +2142,13 @@ layout_type (tree type)
> 
>      case BOOLEAN_TYPE:
>      case INTEGER_TYPE:
>      case ENUMERAL_TYPE:
>        SET_TYPE_MODE (type,
>                    smallest_mode_for_size (TYPE_PRECISION (type), MODE_INT));
> -      TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (TYPE_MODE (type)));
> +      TYPE_SIZE (type) = bitsize_int (GET_MODE_PRECISION (TYPE_MODE
> (type))); TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (TYPE_MODE
> (type))); break;

This doesn't look correct, you might end up with types smaller than their 
modes and breaking the TYPE_SIZE/TYPE_SIZE_UNIT relationship.

> @@ -2516,16 +2535,33 @@ initialize_sizetypes (void)
>      precision = LONG_TYPE_SIZE;
>    else if (strcmp (SIZETYPE, "long long unsigned int") == 0)
>      precision = LONG_LONG_TYPE_SIZE;
>    else if (strcmp (SIZETYPE, "short unsigned int") == 0)
>      precision = SHORT_TYPE_SIZE;
>    else
>     gcc_unreachable ();
> 
>    bprecision
> -    = MIN (precision + BITS_PER_UNIT_LOG + 1, MAX_FIXED_MODE_SIZE);
> +    = MIN (precision, MAX_FIXED_MODE_SIZE);
>    bprecision
>      = GET_MODE_PRECISION (smallest_mode_for_size (bprecision, MODE_INT));
>    if (bprecision > HOST_BITS_PER_DOUBLE_INT)
>      bprecision = HOST_BITS_PER_DOUBLE_INT;
> 
>    /* Create stubs for sizetype and bitsizetype so we can create constants. 

Why are you reducing the precision here?

-- 
Eric Botcazou

Reply via email to