http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57748
--- Comment #21 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
Richard, I have one question:
does this code at expr.c line 4717 look right?
I mean does the code in the if block use the offset at all?
misalignp = true;
to_rtx = gen_reg_rtx (mode);
mem = expand_expr (tem, NULL_RTX, VOIDmode, EXPAND_WRITE);
/* If the misaligned store doesn't overwrite all bits, perform
rmw cycle on MEM. */
if (bitsize != GET_MODE_BITSIZE (mode))
{
create_input_operand (&ops[0], to_rtx, mode);
create_fixed_operand (&ops[1], mem);
/* The movmisalign<mode> pattern cannot fail, else the assignment
would silently be omitted. */
expand_insn (icode, 2, ops);
mem = copy_rtx (mem);
}
what must be done to execute in that block?
create a struct with an array of struct of bitfields or something?
that happens to be unaligned, and have BLKmode?