]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/test/testdata/pgo/devirtualize/mult.pkg/mult.go
cmd/compile: support lookup of functions from export data
[gostls13.git] / src / cmd / compile / internal / test / testdata / pgo / devirtualize / mult.pkg / mult.go
index 8a026a52f5ea1d6b62c927e1485403b7c70b6727..113a5e1a7e42e3bc282aa0b3f4e4150136f15c02 100644 (file)
@@ -30,3 +30,43 @@ func (NegMult) Multiply(a, b int) int {
        }
        return -1 * a * b
 }
+
+// N.B. Different types than AddFunc to test intra-line disambiguation.
+type MultFunc func(int64, int64) int64
+
+func MultFn(a, b int64) int64 {
+       for i := 0; i < 1000; i++ {
+               sink++
+       }
+       return a * b
+}
+
+func NegMultFn(a, b int64) int64 {
+       for i := 0; i < 1000; i++ {
+               sink++
+       }
+       return -1 * a * b
+}
+
+//go:noinline
+func MultClosure() MultFunc {
+       // Explicit closure to differentiate from AddClosure.
+       c := 1
+       return func(a, b int64) int64 {
+               for i := 0; i < 1000; i++ {
+                       sink++
+               }
+               return a * b * int64(c)
+       }
+}
+
+//go:noinline
+func NegMultClosure() MultFunc {
+       c := 1
+       return func(a, b int64) int64 {
+               for i := 0; i < 1000; i++ {
+                       sink++
+               }
+               return -1 * a * b * int64(c)
+       }
+}