Because it doesn't make sense to take the address of a COMPOUND_EXPR
for example? As Kenner puts it himself:
"This turned out to be the "well known" problem that the Ada
front end is making an ADDR_EXPR of odd things, in this case
a COMPOUND_EXPR."
So there you have it: a well known problem in the Ada front end, not
a bug in the gimplifier.
No, I meant "well known" as in "we've discussed it here before".
There's certainly no problem with an ADDR_EXPR of a COMPOUND_EXPR
conceptually. In C form, & (some_function (), foobar) makes perfect sense
and is equivalent to (some_function (), &foobar). Indeed the case that was
discussed on the list was an ADDR_EXPR of a CONSTRUCTOR. Here, the case is
an ADDR_EXPR of a COMPOUND_EXPR whose result is a SAVE_EXPR.
What would be your proposal as to which nodes it's valid to have as operands
of an ADDR_EXPR? We certainly never even thought of such a rule before.