]> Cypherpunks repositories - gostls13.git/commitdiff
fix crash in bug194; add bug196
authorRuss Cox <rsc@golang.org>
Sat, 22 Aug 2009 00:54:07 +0000 (17:54 -0700)
committerRuss Cox <rsc@golang.org>
Sat, 22 Aug 2009 00:54:07 +0000 (17:54 -0700)
R=ken
OCL=33694
CL=33697

src/cmd/gc/const.c
test/bugs/bug196.go [new file with mode: 0644]
test/golden.out

index 80ba7f91dd634f0488a2fd9f89e11339e3d00c0e..6beacab6d1e8d902d06adc27b556ba2161bfea4f 100644 (file)
@@ -846,7 +846,7 @@ cmpslit(Node *l, Node *r)
 int
 smallintconst(Node *n)
 {
-       if(n->op == OLITERAL)
+       if(n->op == OLITERAL && n->type != T)
        switch(simtype[n->type->etype]) {
        case TINT8:
        case TUINT8:
@@ -864,7 +864,7 @@ smallintconst(Node *n)
 long
 nonnegconst(Node *n)
 {
-       if(n->op == OLITERAL)
+       if(n->op == OLITERAL && n->type != T)
        switch(simtype[n->type->etype]) {
        case TINT8:
        case TUINT8:
diff --git a/test/bugs/bug196.go b/test/bugs/bug196.go
new file mode 100644 (file)
index 0000000..0aa0550
--- /dev/null
@@ -0,0 +1,49 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug196
+
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var m = map[int]int{ 0: 0, 1: 0 }
+var nf = 0
+var i int
+
+func multi() (int, int) {
+       return 1,2
+}
+
+func xxx() {
+       var c chan int;
+       x, ok := <-c;
+
+       var m map[int]int;
+       x, ok = m[1];
+
+       var i interface{};
+       var xx int;
+       xx, ok = i.(int);
+
+       a,b := multi();
+}
+
+func f() map[int]int {
+       nf++;
+       return m;
+}
+
+func g() *int {
+       nf++;
+       return &i
+}
+
+func main() {
+       f()[0]++;
+       f()[1] += 2;
+       *g() %= 2;
+       if nf != 3 {
+               panicln("too many calls:", nf);
+       }
+
+}
index 207313f590261ff6bbe3a0d226210bf199a949f2..2ccd4cf0579585e9798cf7273fe3019aaa0e1795 100644 (file)
@@ -175,8 +175,13 @@ bugs/bug193.go:13: fatal error: optoas: no entry LSH-float
 errchk: bugs/bug193.go:14: missing expected error: 'shift'
 
 =========== bugs/bug194.go
+bugs/bug194.go:15: array index must be non-negative integer constant
 BUG should compile and run
-$RUNFILE: line 1: PID Segmentation fault      (core dumped) $G $D/$F.go
 
 =========== bugs/bug195.go
 bugs/bug195.go:9: BUG: errchk: compiler crashed
+
+=========== bugs/bug196.go
+too many calls: 5
+panic PC=xxx
+BUG: bug196