mirror of
https://github.com/golang/go
synced 2024-11-20 04:54:44 -07:00
insert ODCL in type switch case.
needed for heap allocation if variable escapes. package main func main(){ var i interface{} = 42; switch v := i.(type) { case int: println(&v, v); } } R=ken OCL=31245 CL=31245
This commit is contained in:
parent
0aa1b1508a
commit
0417aafe75
@ -680,9 +680,11 @@ static Node* boolname;
|
||||
Node*
|
||||
typeone(Node *t)
|
||||
{
|
||||
Node *a, *b;
|
||||
Node *a, *b, *dcl;
|
||||
|
||||
a = t->left->left; // var
|
||||
dcl = nod(ODCL, a, N);
|
||||
|
||||
a = nod(OLIST, a, boolname); // var,bool
|
||||
|
||||
b = nod(ODOTTYPE, facename, N);
|
||||
@ -693,7 +695,7 @@ typeone(Node *t)
|
||||
b = nod(OIF, N, N);
|
||||
b->ntest = boolname;
|
||||
b->nbody = t->right; // if bool { goto l }
|
||||
return list(a, b);
|
||||
return list(list(dcl, a), b);
|
||||
}
|
||||
|
||||
Node*
|
||||
|
Loading…
Reference in New Issue
Block a user