]> Cypherpunks.ru repositories - gostls13.git/commitdiff
gc: final ...T bug for the day
authorRuss Cox <rsc@golang.org>
Tue, 2 Feb 2010 00:22:16 +0000 (16:22 -0800)
committerRuss Cox <rsc@golang.org>
Tue, 2 Feb 2010 00:22:16 +0000 (16:22 -0800)
R=ken2
CC=golang-dev
https://golang.org/cl/199046

src/cmd/gc/gen.c
src/cmd/gc/typecheck.c
src/cmd/gc/walk.c
test/ddd.go

index 279cad998f77a45a41a5e13f4210d284cbe93093..57dd674fb1d42d90a923e216fd54d903af875d9f 100644 (file)
@@ -411,6 +411,8 @@ cgen_dcl(Node *n)
        }
        if(!(n->class & PHEAP))
                return;
+       if(n->alloc == nil)
+               n->alloc = callnew(n->type);
        cgen_as(n->heapaddr, n->alloc);
 }
 
index 4204ee4568f969188647b1f3066c1a38aa2a17bd..7b0ce038298deeff5e121e08f5fb43ec2b22f103 100644 (file)
@@ -1907,7 +1907,6 @@ addrescapes(Node *n)
                        n->class |= PHEAP;
                        n->addable = 0;
                        n->ullman = 2;
-                       n->alloc = callnew(n->type);
                        n->xoffset = 0;
 
                        // create stack variable to hold pointer to heap
index 9a84acce36832d759799ea18f88a6d63497cfedf..cac2d50ea11e1d4d6b410acfa9569c6fe2592a73 100644 (file)
@@ -2182,6 +2182,8 @@ paramstoheap(Type **argin)
                        continue;
 
                // generate allocation & copying code
+               if(v->alloc == nil)
+                       v->alloc = callnew(v->type);
                nn = list(nn, nod(OAS, v->heapaddr, v->alloc));
                nn = list(nn, nod(OAS, v, v->stackparam));
        }
index 08c88f4ff256bdd0307d8faec4ab3f7be1f544dd..e633842f54a9044d453fcaf83a5295392f4d0334 100644 (file)
@@ -18,13 +18,11 @@ func sumC(args ...int) int {
        return func() int { return sum(args) } ()
 }
 
-/* TODO(rsc)
 var sumD = func(args ...int) int { return sum(args) }
 
 var sumE = func() func(...int) int { return func(args ...int) int { return sum(args) } } ()
 
 var sumF = func(args ...int) func() int { return func() int { return sum(args) } }
-*/
 
 func sumA(args []int) int {
        s := 0
@@ -76,7 +74,6 @@ func main() {
        if x := sumC(4, 5, 6); x != 15 {
                panicln("sumC 15", x)
        }
-/* TODO(rsc)
        if x := sumD(4, 5, 7); x != 16 {
                panicln("sumD 16", x)
        }
@@ -86,7 +83,6 @@ func main() {
        if x := sumF(4, 5, 9)(); x != 18 {
                panicln("sumF 18", x)
        }
-*/
        if x := sum2(1, 2, 3); x != 2*6 {
                panicln("sum 6", x)
        }