> Well, the commit did not add a testcase and when I looked up the patch
> in the mailing list archive
> (http://gcc.gnu.org/ml/gcc-patches/2006-11/msg01449.html) it said it
> was fixing problems not reproducible on trunk so it's basically
> impossible for me to evaluate whether it is still necessary by some
> simple testing. Having said that, I guess I can give it a round of
> regular testing on all the platforms I have currently set up.
The problem was that, for the same address, you had the alias set of the type
on one MEM and the alias set of the reference on the other MEM. If the alias
set of the reference doesn't conflict with that of the type (this can happen
in Ada because of DECL_NONADDRESSABLE_P), the RAW dependency may be missed.
If we don't put the alias set of the reference on one of the MEM, then I don't
think that we need to put it on the other MEM. That's what's done for the
first, non-bitfield temporary now.
> 2012-04-10 Martin Jambor <mjam...@suse.cz>
> * expr.c (expand_expr_real_1): Pass type, not the expression, to
> set_mem_attributes for a memory temporary. Do not call the function
> for the memory temporary created for a bitfield.
Fine with me, but the now dangling code in the bitfield case is a bit annoying.