]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile: identical values are the same pointer
authorKeith Randall <khr@golang.org>
Wed, 24 Feb 2016 20:58:47 +0000 (12:58 -0800)
committerKeith Randall <khr@golang.org>
Wed, 24 Feb 2016 22:21:01 +0000 (22:21 +0000)
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: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/ssa/rewrite.go

index 4197b0da8846f22d23c8376228c6bfb026c1a453..60509d214e962f87a3ad797df4bc83402823bfd4 100644 (file)
@@ -204,6 +204,9 @@ func uaddOvf(a, b int64) bool {
 
 // isSamePtr reports whether p1 and p2 point to the same address.
 func isSamePtr(p1, p2 *Value) bool {
+       if p1 == p2 {
+               return true
+       }
        // 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
        return (p1.Op == OpOffPtr || p1.Op == OpAddr) && p1.Op == p2.Op &&