mirror of
https://github.com/golang/go
synced 2024-11-23 00:40:08 -07:00
cmd/gc: fix divide by zero error in compiler
Fixes #6399. R=ken2 CC=golang-dev https://golang.org/cl/13253055
This commit is contained in:
parent
a70cbf1329
commit
51266761fd
@ -1295,7 +1295,7 @@ walkexpr(Node **np, NodeList **init)
|
||||
t = n->type;
|
||||
if(n->esc == EscNone
|
||||
&& smallintconst(l) && smallintconst(r)
|
||||
&& mpgetfix(r->val.u.xval) < (1ULL<<16) / t->type->width) {
|
||||
&& (t->type->width == 0 || mpgetfix(r->val.u.xval) < (1ULL<<16) / t->type->width)) {
|
||||
// var arr [r]T
|
||||
// n = arr[:l]
|
||||
t = aindex(r, t->type); // [r]T
|
||||
|
27
test/fixedbugs/issue6399.go
Normal file
27
test/fixedbugs/issue6399.go
Normal file
@ -0,0 +1,27 @@
|
||||
// compile
|
||||
|
||||
package main
|
||||
|
||||
type Foo interface {
|
||||
Print()
|
||||
}
|
||||
|
||||
type Bar struct{}
|
||||
|
||||
func (b Bar) Print() {}
|
||||
|
||||
func main() {
|
||||
b := make([]Bar, 20)
|
||||
f := make([]Foo, 20)
|
||||
for i := range f {
|
||||
f[i] = b[i]
|
||||
}
|
||||
T(f)
|
||||
_ = make([]struct{}, 1)
|
||||
}
|
||||
|
||||
func T(f []Foo) {
|
||||
for i := range f {
|
||||
f[i].Print()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user