cmd/compile: fix value range check for complex constants

Fixes #11590.

Change-Id: I4144107334604a2cc98c7984df3b5d4cde3d30af
Reviewed-on: https://go-review.googlesource.com/16920
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Russ Cox 2015-11-04 15:47:48 -05:00
parent 292ad59291
commit 2c11164db5
2 changed files with 12 additions and 2 deletions

View file

@ -259,7 +259,6 @@ func convlit1(np **Node, t *Type, explicit bool) {
n.SetVal(toint(n.Val()))
fallthrough
// flowthrough
case CTINT:
overflow(n.Val(), t)
}
@ -272,7 +271,6 @@ func convlit1(np **Node, t *Type, explicit bool) {
n.SetVal(toflt(n.Val()))
fallthrough
// flowthrough
case CTFLT:
n.SetVal(Val{truncfltlit(n.Val().U.(*Mpflt), t)})
}
@ -283,6 +281,7 @@ func convlit1(np **Node, t *Type, explicit bool) {
case CTFLT, CTINT, CTRUNE:
n.SetVal(tocplx(n.Val()))
fallthrough
case CTCPLX:
overflow(n.Val(), t)

View file

@ -0,0 +1,11 @@
// errorcheck
// Copyright 2015 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 p
var _ = int8(4) * 300 // ERROR "constant overflows int8"
var _ = complex64(1) * 1e200 // ERROR "constant overflows complex64"
var _ = complex128(1) * 1e500 // ERROR "constant overflows complex128"