Commit Message

This patch to the Go frontend fixes a compiler crash for code like
for i, v := range append(a, b...) {
}
The problem is that for a case like this there are multiple pointers to
the call expression, which interacts poorly with lowering in which the
call expression is replaced. This patch papers over the problem. It's
not a particularly clean fix but I can't think of any way that it will
actually fail. The patch also includes a couple of minor cleanups.
Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu.
Committed to mainline.
Ian