Commit a5325761 authored by Keith Randall's avatar Keith Randall

[dev.ssa] cmd/compile: identical values are the same pointer

Forgot the obvious case.  Allows us to remove the load in:

func f(p *int, x int) int {
	*p = x + 5
	return *p
}

Change-Id: I93686d8240bab3a1d166b88e224cf71e3d947aef
Reviewed-on: https://go-review.googlesource.com/19905
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent ed737fd8
...@@ -204,6 +204,9 @@ func uaddOvf(a, b int64) bool { ...@@ -204,6 +204,9 @@ func uaddOvf(a, b int64) bool {
// isSamePtr reports whether p1 and p2 point to the same address. // isSamePtr reports whether p1 and p2 point to the same address.
func isSamePtr(p1, p2 *Value) bool { func isSamePtr(p1, p2 *Value) bool {
if p1 == p2 {
return true
}
// Aux isn't used in OffPtr, and AuxInt isn't currently used in // Aux isn't used in OffPtr, and AuxInt isn't currently used in
// Addr, but this still works as the values will be null/0 // Addr, but this still works as the values will be null/0
return (p1.Op == OpOffPtr || p1.Op == OpAddr) && p1.Op == p2.Op && return (p1.Op == OpOffPtr || p1.Op == OpAddr) && p1.Op == p2.Op &&
......
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