mirror of
https://github.com/golang/go
synced 2024-11-11 18:01:47 -07:00
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:
parent
0a5116493c
commit
ac1d440ea6
@ -591,7 +591,7 @@ func evconst(n *Node) {
|
|||||||
setconst(n, shiftOp(nl.Val(), op, nr.Val()))
|
setconst(n, shiftOp(nl.Val(), op, nr.Val()))
|
||||||
}
|
}
|
||||||
|
|
||||||
case OCONV:
|
case OCONV, ORUNESTR:
|
||||||
if okforconst[n.Type.Etype] && nl.Op == OLITERAL {
|
if okforconst[n.Type.Etype] && nl.Op == OLITERAL {
|
||||||
setconst(n, convertVal(nl.Val(), n.Type, true))
|
setconst(n, convertVal(nl.Val(), n.Type, true))
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,10 @@ const (
|
|||||||
|
|
||||||
ctrue = true
|
ctrue = true
|
||||||
cfalse = !ctrue
|
cfalse = !ctrue
|
||||||
|
|
||||||
|
// Issue #34563
|
||||||
|
_ = string(int(123))
|
||||||
|
_ = string(rune(456))
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
Loading…
Reference in New Issue
Block a user