mirror of https://github.com/golang/go.git
[dev.power64] cmd/9c: fix switch bug
The cmd/cc bundled with 9c has additional code compared to our cmd/cc, and without those code, 9c couldn't handle switch statement where the expression is not just a simple int32 or int64 variable (e.g. g->status or int8 variable). All credit goes to rsc. LGTM=rsc R=rsc, iant CC=golang-codereviews https://golang.org/cl/125840043
This commit is contained in:
parent
4be75c8f26
commit
95e8a3a1da
|
|
@ -32,11 +32,19 @@
|
|||
void
|
||||
swit1(C1 *q, int nc, int32 def, Node *n)
|
||||
{
|
||||
Node tn;
|
||||
|
||||
Node tn, nod;
|
||||
|
||||
regalloc(&nod, n, Z);
|
||||
/* always signed */
|
||||
if(typev[n->type->etype])
|
||||
nod.type = types[TVLONG];
|
||||
else
|
||||
nod.type = types[TLONG];
|
||||
cgen(n, &nod);
|
||||
regalloc(&tn, ®node, Z);
|
||||
swit2(q, nc, def, n, &tn);
|
||||
swit2(q, nc, def, &nod, &tn);
|
||||
regfree(&tn);
|
||||
regfree(&nod);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in New Issue