Hi,
> --- gcc/expr.c.jj 2016-02-12 00:50:55.000000000 +0100 > +++ gcc/expr.c 2016-02-19 10:43:59.639162531 +0100 > @@ -6643,14 +6643,24 @@ store_field (rtx target, HOST_WIDE_INT b > /* Except for initialization of full bytes from a CONSTRUCTOR, which > we will handle specially below. */ > && !(TREE_CODE (exp) == CONSTRUCTOR > - && bitsize % BITS_PER_UNIT == 0)) > + && bitsize % BITS_PER_UNIT == 0) > + /* And except for bitwise copying of TREE_ADDRESSABLE types, > + where the FIELD_DECL has the right bitsize, but TREE_TYPE (exp) > + includes some extra padding. */ > + && (!TREE_ADDRESSABLE (TREE_TYPE (exp)) > + || TREE_CODE (exp) != COMPONENT_REF > + || TREE_CODE (DECL_SIZE (TREE_OPERAND (exp, 1))) != INTEGER_CST > + || (bitsize % BITS_PER_UNIT != 0) > + || (bitpos % BITS_PER_UNIT != 0) > + || (compare_tree_int (DECL_SIZE (TREE_OPERAND (exp, 1)), bitsize) > + != 0))) > /* If we are expanding a MEM_REF of a non-BLKmode non-addressable > decl we must use bitfield operations. */ isn't the indentation of the new block wrong? Bernd.