https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100464
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the difference is that 'b' is TREE_ADDRESSABLE with -g but not without.
in forwprop2 we do
- # DEBUG j$40 => MEM <int *> [(int *[33] *)&*.LC0{&} + 40B]
+ # DEBUG j$40 => &b{&}
and that makes b TREE_ADDRESSABLE which happens in
tree
canonicalize_constructor_val (tree cval, tree from_decl)
{
...
if (VAR_P (base))
TREE_ADDRESSABLE (base) = 1;
which was added in r181197 as to fix "Java early folding". I'll test removing
that (it should assert the addressable flag is set, but _not_ when we're
ultimatively coming from a debug stmt which means it'll be awkward to keep).