Commit 5ed4bb6d authored by Russ Cox's avatar Russ Cox

cmd/5g: fix build

The line in cgen.go was lost during the ginscmp CL.
The ggen.go change is not strictly necessary, but
it makes the 5g -S output for x[0] match what it said
before the ginscmp CL.

Change-Id: I5890a9ec1ac69a38509416eda5aea13b8b12b94a
Reviewed-on: https://go-review.googlesource.com/9929Reviewed-by: default avatarRuss Cox <rsc@golang.org>
parent 9b379d7e
...@@ -480,20 +480,28 @@ func ginscon(as int, c int64, n *gc.Node) { ...@@ -480,20 +480,28 @@ func ginscon(as int, c int64, n *gc.Node) {
} }
func ginscmp(op int, t *gc.Type, n1, n2 *gc.Node, likely int) *obj.Prog { func ginscmp(op int, t *gc.Type, n1, n2 *gc.Node, likely int) *obj.Prog {
if gc.Isint[t.Etype] && n1.Op == gc.OLITERAL && gc.Mpgetfix(n1.Val.U.Xval) == 0 && n2.Op != gc.OLITERAL {
op = gc.Brrev(op)
n1, n2 = n2, n1
}
var r1, r2, g1, g2 gc.Node var r1, r2, g1, g2 gc.Node
gc.Regalloc(&r1, t, n1) gc.Regalloc(&r1, t, n1)
gc.Regalloc(&g1, n1.Type, &r1) gc.Regalloc(&g1, n1.Type, &r1)
gc.Cgen(n1, &g1) gc.Cgen(n1, &g1)
gmove(&g1, &r1) gmove(&g1, &r1)
gc.Regalloc(&r2, t, n2) if gc.Isint[t.Etype] && n2.Op == gc.OLITERAL && gc.Mpgetfix(n2.Val.U.Xval) == 0 {
gc.Regalloc(&g2, n1.Type, &r2) gins(arm.ACMP, &r1, n2)
gc.Cgen(n2, &g2) } else {
gmove(&g2, &r2) gc.Regalloc(&r2, t, n2)
gins(optoas(gc.OCMP, t), &r1, &r2) gc.Regalloc(&g2, n1.Type, &r2)
gc.Cgen(n2, &g2)
gmove(&g2, &r2)
gins(optoas(gc.OCMP, t), &r1, &r2)
gc.Regfree(&g2)
gc.Regfree(&r2)
}
gc.Regfree(&g1) gc.Regfree(&g1)
gc.Regfree(&r1) gc.Regfree(&r1)
gc.Regfree(&g2)
gc.Regfree(&r2)
return gc.Gbranch(optoas(op, t), nil, likely) return gc.Gbranch(optoas(op, t), nil, likely)
} }
......
...@@ -1045,6 +1045,7 @@ func Agenr(n *Node, a *Node, res *Node) { ...@@ -1045,6 +1045,7 @@ func Agenr(n *Node, a *Node, res *Node) {
n1.Op = OINDREG n1.Op = OINDREG
n1.Type = Types[Tptr] n1.Type = Types[Tptr]
n1.Xoffset = int64(Array_nel) n1.Xoffset = int64(Array_nel)
Nodconst(&n2, Types[TUINT32], int64(v))
p1 := Thearch.Ginscmp(OGT, Types[TUINT32], &n1, &n2, +1) p1 := Thearch.Ginscmp(OGT, Types[TUINT32], &n1, &n2, +1)
Ginscall(Panicindex, -1) Ginscall(Panicindex, -1)
Patch(p1, Pc) Patch(p1, Pc)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment