On Thu, Dec 5, 2013 at 6:57 AM, Joseph S. Myers <jos...@codesourcery.com> wrote:

> Index: c-family/c-common.c
> ===================================================================
> --- c-family/c-common.c (revision 205668)
> +++ c-family/c-common.c (working copy)
> @@ -4921,14 +4921,17 @@ c_common_get_alias_set (tree t)
>  }
>
>  /* Compute the value of 'sizeof (TYPE)' or '__alignof__ (TYPE)', where
> -   the second parameter indicates which OPERATOR is being applied.
> +   the IS_SIZEOF parameter indicates which operator is being applied.
>     The COMPLAIN flag controls whether we should diagnose possibly
>     ill-formed constructs or not.  LOC is the location of the SIZEOF or
> -   TYPEOF operator.  */
> +   TYPEOF operator.  If MIN_ALIGNOF, the least alignment required for
> +   a type in any context should be returned, rather than the normal
> +   alignment for that type.  */
>
>  tree
>  c_sizeof_or_alignof_type (location_t loc,
> -                         tree type, bool is_sizeof, int complain)
> +                         tree type, bool is_sizeof, bool min_alignof,
> +                         int complain)
>  {
>    const char *op_name;
>    tree value = NULL;
> @@ -4994,6 +4997,22 @@ c_sizeof_or_alignof_type (location_t loc,
>         value = size_binop_loc (loc, CEIL_DIV_EXPR, TYPE_SIZE_UNIT (type),
>                                 size_int (TYPE_PRECISION (char_type_node)
>                                           / BITS_PER_UNIT));
> +      else if (min_alignof)
> +       {
> +         unsigned int align = TYPE_ALIGN (type);
> +         align = MIN (align, BIGGEST_ALIGNMENT);
> +#ifdef BIGGEST_FIELD_ALIGNMENT
> +         align = MIN (align, BIGGEST_FIELD_ALIGNMENT);
> +#endif
> +         tree field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, NULL_TREE,
> +                                  type);
> +         unsigned int field_align = align;
> +#ifdef ADJUST_FIELD_ALIGN
> +         field_align = ADJUST_FIELD_ALIGN (field, field_align);
> +#endif

Won't *field* be unused if ADJUST_FIELD_ALIGN not defined?

Thanks,
bin


-- 
Best Regards.

Reply via email to