| // 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 |
| |
| // TODO: optimization is not applied because of mapslow flag. |
| 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) |
| } |
| |
| // TODO: optimization is not applied because of mapslow flag. |
| 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") |
| } |