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).

Reply via email to