зеркало из https://github.com/CryptoPro/go.git
cmd/compile: apply constant folding to ORUNESTR
ORUNESTR represents the special case of integer->string conversion. If the integer is a constant, then the string is a constant too, so evconst needs to perform constant folding here. Passes toolstash-check. Fixes #34563. Change-Id: Ieab3d76794d8ce570106b6b707a4bcd725d156e9 Reviewed-on: https://go-review.googlesource.com/c/go/+/197677 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Родитель
0a5116493c
Коммит
ac1d440ea6
|
@ -591,7 +591,7 @@ func evconst(n *Node) {
|
|||
setconst(n, shiftOp(nl.Val(), op, nr.Val()))
|
||||
}
|
||||
|
||||
case OCONV:
|
||||
case OCONV, ORUNESTR:
|
||||
if okforconst[n.Type.Etype] && nl.Op == OLITERAL {
|
||||
setconst(n, convertVal(nl.Val(), n.Type, true))
|
||||
}
|
||||
|
|
|
@ -24,6 +24,10 @@ const (
|
|||
|
||||
ctrue = true
|
||||
cfalse = !ctrue
|
||||
|
||||
// Issue #34563
|
||||
_ = string(int(123))
|
||||
_ = string(rune(456))
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
Загрузка…
Ссылка в новой задаче