mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
![Keith Randall](/assets/img/avatar_default.png)
With the introduction of stack objects, VARKILL information is no longer needed. With stack objects, an object is dead when there are no more static references to it, and the stack scanner can't find any live pointers to it. VARKILL information isn't used to establish live ranges for address-taken variables any more. In effect, the last static reference *is* the VARKILL, and there's an additional dynamic liveness check during stack scanning. Next CL will actually rip out the VARKILL opcodes. Change-Id: I030a2ab867445cf4e0e69397911f8a2e2f0ed07b Reviewed-on: https://go-review.googlesource.com/c/go/+/419234 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Keith Randall <khr@golang.org>
485 lines
9.1 KiB
Go
485 lines
9.1 KiB
Go
// asmcheck
|
|
|
|
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package codegen
|
|
|
|
// These tests check that mapaccess calls are not used.
|
|
// Issues #23661 and #24364.
|
|
|
|
func mapCompoundAssignmentInt8() {
|
|
m := make(map[int8]int8, 0)
|
|
var k int8 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] += 67
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] -= 123
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] *= 45
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] |= 78
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] ^= 89
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] <<= 9
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] >>= 10
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]++
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]--
|
|
}
|
|
|
|
func mapCompoundAssignmentInt32() {
|
|
m := make(map[int32]int32, 0)
|
|
var k int32 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] += 67890
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] -= 123
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] *= 456
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] |= 78
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] ^= 89
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] <<= 9
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] >>= 10
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]++
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]--
|
|
}
|
|
|
|
func mapCompoundAssignmentInt64() {
|
|
m := make(map[int64]int64, 0)
|
|
var k int64 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] += 67890
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] -= 123
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] *= 456
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] |= 78
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] ^= 89
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] <<= 9
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] >>= 10
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]++
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]--
|
|
}
|
|
|
|
func mapCompoundAssignmentComplex128() {
|
|
m := make(map[complex128]complex128, 0)
|
|
var k complex128 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] += 67890
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] -= 123
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] *= 456
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]++
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k]--
|
|
}
|
|
|
|
func mapCompoundAssignmentString() {
|
|
m := make(map[string]string, 0)
|
|
var k string = "key"
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] += "value"
|
|
}
|
|
|
|
var sinkAppend bool
|
|
|
|
func mapAppendAssignmentInt8() {
|
|
m := make(map[int8][]int8, 0)
|
|
var k int8 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1, 2, 3)
|
|
|
|
a := []int8{7, 8, 9, 0}
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], a...)
|
|
|
|
// Exceptions
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(a, m[k]...)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
sinkAppend, m[k] = !sinkAppend, append(m[k], 99)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(m[k+1], 100)
|
|
}
|
|
|
|
func mapAppendAssignmentInt32() {
|
|
m := make(map[int32][]int32, 0)
|
|
var k int32 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1, 2, 3)
|
|
|
|
a := []int32{7, 8, 9, 0}
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], a...)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k+1] = append(m[k+1], a...)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[-k] = append(m[-k], a...)
|
|
|
|
// Exceptions
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(a, m[k]...)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
sinkAppend, m[k] = !sinkAppend, append(m[k], 99)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(m[k+1], 100)
|
|
}
|
|
|
|
func mapAppendAssignmentInt64() {
|
|
m := make(map[int64][]int64, 0)
|
|
var k int64 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1, 2, 3)
|
|
|
|
a := []int64{7, 8, 9, 0}
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], a...)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k+1] = append(m[k+1], a...)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[-k] = append(m[-k], a...)
|
|
|
|
// Exceptions
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(a, m[k]...)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
sinkAppend, m[k] = !sinkAppend, append(m[k], 99)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(m[k+1], 100)
|
|
}
|
|
|
|
func mapAppendAssignmentComplex128() {
|
|
m := make(map[complex128][]complex128, 0)
|
|
var k complex128 = 0
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1)
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], 1, 2, 3)
|
|
|
|
a := []complex128{7, 8, 9, 0}
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], a...)
|
|
|
|
// Exceptions
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(a, m[k]...)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
sinkAppend, m[k] = !sinkAppend, append(m[k], 99)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(m[k+1], 100)
|
|
}
|
|
|
|
func mapAppendAssignmentString() {
|
|
m := make(map[string][]string, 0)
|
|
var k string = "key"
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], "1")
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], "1", "2", "3")
|
|
|
|
a := []string{"7", "8", "9", "0"}
|
|
|
|
// 386:-".*mapaccess"
|
|
// amd64:-".*mapaccess"
|
|
// arm:-".*mapaccess"
|
|
// arm64:-".*mapaccess"
|
|
m[k] = append(m[k], a...)
|
|
|
|
// Exceptions
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(a, m[k]...)
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
sinkAppend, m[k] = !sinkAppend, append(m[k], "99")
|
|
|
|
// 386:".*mapaccess"
|
|
// amd64:".*mapaccess"
|
|
// arm:".*mapaccess"
|
|
// arm64:".*mapaccess"
|
|
m[k] = append(m[k+"1"], "100")
|
|
}
|