cmd/8c: fix store to complex uint64 ptr
cmd/8c: fix store to complex uint64 ptr

Assignment of a computed uint64 value to an
address derived with a function call was executing
the call after computing the value, which trashed
the value (held in registers).

long long *f(void) { return 0; }
void g(int x, int y) {
        *f() = (long long)x | (long long)y<<32;
}

Before:

(x.c:3)	TEXT	g+0(SB),(gok(71))
...
(x.c:4)	ORL	AX,DX
(x.c:4)	ORL	CX,BX
(x.c:4)	CALL	,f+0(SB)
(x.c:4)	MOVL	DX,(AX)
(x.c:4)	MOVL	BX,4(AX)

After:
(x.c:3)	TEXT	g+0(SB),(gok(71))
(x.c:4)	CALL	,f+0(SB)
...
(x.c:4)	ORL	CX,BX
(x.c:4)	ORL	DX,BP
(x.c:4)	MOVL	BX,(AX)
(x.c:4)	MOVL	BP,4(AX)

Fixes issue 3501.

R=ken2
CC=golang-dev
http://codereview.appspot.com/5998043

tv42/old-go,tv42/old-go,gnanderson/go,apparentlymart/golang,gnanderson/go,gnanderson/go,dsriram/golang,tv42/old-go,pombredanne/go-deleteme,tv42/old-go,dsriram/golang,apparentlymart/golang,gnanderson/go,apparentlymart/golang,dsriram/golang,apparentlymart/golang,tv42/old-go,gnanderson/go,pombredanne/go-deleteme,gnanderson/go,apparentlymart/golang,pombredanne/go-deleteme,tv42/old-go,tv42/old-go,dsriram/golang,dsriram/golang,dsriram/golang,pombredanne/go-deleteme,dsriram/golang,apparentlymart/golang,pombredanne/go-deleteme,pombredanne/go-deleteme,pombredanne/go-deleteme,gnanderson/go,apparentlymart/golang