aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd/compile/internal/gc/const.go1
-rw-r--r--src/cmd/compile/internal/gc/subr.go28
2 files changed, 9 insertions, 20 deletions
diff --git a/src/cmd/compile/internal/gc/const.go b/src/cmd/compile/internal/gc/const.go
index af84005908..8422eec17e 100644
--- a/src/cmd/compile/internal/gc/const.go
+++ b/src/cmd/compile/internal/gc/const.go
@@ -1246,6 +1246,7 @@ illegal:
}
}
+// nodlit returns a new untyped constant with value v.
func nodlit(v Val) *Node {
n := nod(OLITERAL, nil, nil)
n.SetVal(v)
diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go
index 96c1fc1cca..7354625de0 100644
--- a/src/cmd/compile/internal/gc/subr.go
+++ b/src/cmd/compile/internal/gc/subr.go
@@ -413,21 +413,15 @@ func (x methcmp) Less(i, j int) bool {
}
func nodintconst(v int64) *Node {
- c := nod(OLITERAL, nil, nil)
- c.SetAddable(true)
- c.SetVal(Val{new(Mpint)})
- c.Val().U.(*Mpint).SetInt64(v)
- c.Type = types.Types[TIDEAL]
- return c
+ u := new(Mpint)
+ u.SetInt64(v)
+ return nodlit(Val{u})
}
func nodfltconst(v *Mpflt) *Node {
- c := nod(OLITERAL, nil, nil)
- c.SetAddable(true)
- c.SetVal(Val{newMpflt()})
- c.Val().U.(*Mpflt).Set(v)
- c.Type = types.Types[TIDEAL]
- return c
+ u := newMpflt()
+ u.Set(v)
+ return nodlit(Val{u})
}
func nodconst(n *Node, t *types.Type, v int64) {
@@ -444,17 +438,11 @@ func nodconst(n *Node, t *types.Type, v int64) {
}
func nodnil() *Node {
- c := nodintconst(0)
- c.SetVal(Val{new(NilVal)})
- c.Type = types.Types[TNIL]
- return c
+ return nodlit(Val{new(NilVal)})
}
func nodbool(b bool) *Node {
- c := nodintconst(0)
- c.SetVal(Val{b})
- c.Type = types.Idealbool
- return c
+ return nodlit(Val{b})
}
func nodstr(s string) *Node {