]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: add missing typecheck for walk-generated constants.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Fri, 6 Sep 2013 20:55:30 +0000 (16:55 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 6 Sep 2013 20:55:30 +0000 (16:55 -0400)
Fixes #6131.

R=golang-dev, daniel.morsing, rsc
CC=golang-dev
https://golang.org/cl/12800045

src/cmd/gc/walk.c
test/fixedbugs/issue6131.go [new file with mode: 0644]

index 98a5a8968e3d4ae5c73a807ffaa8b1553972fae2..ff7d772570481127e244e6e52115ba4588bf28b5 100644 (file)
@@ -1387,6 +1387,8 @@ ret:
        // walk of y%1 may have replaced it by 0.
        // Check whether n with its updated args is itself now a constant.
        evconst(n);
+       if(n->op == OLITERAL)
+               typecheck(&n, Erv);
 
        ullmancalc(n);
 
diff --git a/test/fixedbugs/issue6131.go b/test/fixedbugs/issue6131.go
new file mode 100644 (file)
index 0000000..817e4a8
--- /dev/null
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2013 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.
+
+// Issue 6131: missing typecheck after reducing
+// n%1 == 0 to a constant value.
+
+package main
+
+func isGood(n int) bool {
+       return n%1 == 0
+}
+
+func main() {
+       if !isGood(256) {
+               panic("!isGood")
+       }
+}