Skip to content

Commit

Permalink
cmd/compile: remove pointer arithmetic
Browse files Browse the repository at this point in the history
Change-Id: Ie4bab0b74d5a4e1aecd8501a48176b2e9a3d8c42
Reviewed-on: https://go-review.googlesource.com/c/76311
Run-TryBot: Matthew Dempsky <[email protected]>
Reviewed-by: Robert Griesemer <[email protected]>
  • Loading branch information
mdempsky committed Oct 4, 2018
1 parent 2f1ef6b commit 5e8beed
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
23 changes: 16 additions & 7 deletions src/cmd/compile/internal/gc/range.go
Original file line number Diff line number Diff line change
Expand Up @@ -286,13 +286,7 @@ func walkrange(n *Node) *Node {
// This runs *after* the condition check, so we know
// advancing the pointer is safe and won't go past the
// end of the allocation.
tmp = nod(OADD, hp, nodintconst(t.Elem().Width))

tmp.Type = hp.Type
tmp.SetTypecheck(1)
tmp.Right.Type = types.Types[types.Tptr]
tmp.Right.SetTypecheck(1)
a = nod(OAS, hp, tmp)
a = nod(OAS, hp, addptr(hp, t.Elem().Width))
a = typecheck(a, Etop)
n.List.Set1(a)

Expand Down Expand Up @@ -613,3 +607,18 @@ func arrayClear(n, v1, v2, a *Node) bool {
n = walkstmt(n)
return true
}

// addptr returns (*T)(uintptr(p) + n).
func addptr(p *Node, n int64) *Node {
t := p.Type

p = nod(OCONVNOP, p, nil)
p.Type = types.Types[TUINTPTR]

p = nod(OADD, p, nodintconst(n))

p = nod(OCONVNOP, p, nil)
p.Type = t

return p
}
2 changes: 0 additions & 2 deletions src/cmd/compile/internal/gc/ssa.go
Original file line number Diff line number Diff line change
Expand Up @@ -1247,10 +1247,8 @@ var opToSSA = map[opAndType]ssa.Op{
opAndType{OADD, TUINT16}: ssa.OpAdd16,
opAndType{OADD, TINT32}: ssa.OpAdd32,
opAndType{OADD, TUINT32}: ssa.OpAdd32,
opAndType{OADD, TPTR32}: ssa.OpAdd32,
opAndType{OADD, TINT64}: ssa.OpAdd64,
opAndType{OADD, TUINT64}: ssa.OpAdd64,
opAndType{OADD, TPTR64}: ssa.OpAdd64,
opAndType{OADD, TFLOAT32}: ssa.OpAdd32F,
opAndType{OADD, TFLOAT64}: ssa.OpAdd64F,

Expand Down

0 comments on commit 5e8beed

Please sign in to comment.