codekingpro/portable-devtools
114k
1// asmcheck2 3//go:build goexperiment.runtimefreegc4 5// Copyright 2025 The Go Authors. All rights reserved.6// Use of this source code is governed by a BSD-style7// license that can be found in the LICENSE file.8 9package codegen10 11func Append1(n int) []int {12 var r []int13 for i := range n {14 // amd64:`.*growsliceNoAlias\b`15 r = append(r, i)16 }17 // amd64:`.*moveSliceNoCapNoScan\b`18 return r19}20 21func Append2(n int) (r []int) {22 for i := range n {23 // amd64:`.*growslice\b`24 r = append(r, i)25 }26 // amd64:`.*moveSliceNoCapNoScan\b`27 return28}29 30func Append3(n int) (r []int) {31 for i := range n {32 // amd64:`.*growslice\b`33 r = append(r, i)34 }35 // amd64:`.*moveSliceNoCapNoScan\b`36 return r37}38 39func Append4(n int) []int {40 var r []int41 for i := range n {42 // amd64:`.*growsliceBufNoAlias\b`43 r = append(r, i)44 }45 println(cap(r))46 // amd64:`.*moveSliceNoScan\b`47 return r48}49 50func Append5(n int) []int {51 var r []int52 for i := range n {53 // amd64:`.*growsliceBufNoAlias\b`54 r = append(r, i)55 }56 useSlice(r)57 // amd64:`.*moveSliceNoScan\b`58 return r59}60 61func Append5b(n int) []int {62 var r []int63 useSlice(r)64 for i := range n {65 // amd64:`.*growsliceBuf\b` -`.*growsliceBufNoAlias\b`66 r = append(r, i)67 }68 // amd64:`.*moveSliceNoScan\b`69 return r70}71 72func Append6(n int) []*int {73 var r []*int74 for i := range n {75 // TODO(thepudds): for now, the compiler only uses the NoAlias version76 // for element types without pointers.77 // amd64:`.*growslice\b`78 r = append(r, new(i))79 }80 // amd64:`.*moveSliceNoCap\b`81 return r82}83 84func Append7(n int) []*int {85 var r []*int86 for i := range n {87 // TODO(thepudds): for now, the compiler only uses the NoAlias version88 // for element types without pointers.89 // amd64:`.*growsliceBuf\b`90 r = append(r, new(i))91 }92 println(cap(r))93 // amd64:`.*moveSlice\b`94 return r95}96 97func Append8(n int, p *[]int) {98 var r []int99 for i := range n {100 // amd64:`.*growsliceNoAlias\b`101 r = append(r, i)102 }103 // amd64:`.*moveSliceNoCapNoScan\b`104 *p = r105}106 107func Append8b(n int, p *[]int) {108 var r []int109 // amd64:`.*moveSliceNoCapNoScan\b`110 *p = r111 for i := range n {112 // amd64:`.*growslice\b` -`.*growsliceNoAlias\b`113 r = append(r, i)114 }115}116 117func Append9(n int) []int {118 var r []int119 for i := range n {120 // amd64:`.*growsliceNoAlias\b`121 r = append(r, i)122 }123 println(len(r))124 // amd64:`.*moveSliceNoCapNoScan\b`125 return r126}127 128func Append10(n int) []int {129 var r []int130 for i := range n {131 // amd64:`.*growsliceNoAlias\b`132 r = append(r, i)133 }134 println(r[3])135 // amd64:`.*moveSliceNoCapNoScan\b`136 return r137}138 139func Append11(n int) []int {140 var r []int141 for i := range n {142 // amd64:`.*growsliceBufNoAlias\b`143 r = append(r, i)144 }145 r = r[3:5]146 // amd64:`.*moveSliceNoScan\b`147 return r148}149 150func Append12(n int) []int {151 var r []int152 r = nil153 for i := range n {154 // amd64:`.*growslice\b`155 r = append(r, i)156 }157 // amd64:`.*moveSliceNoCapNoScan\b`158 return r159}160 161func Append13(n int) []int {162 var r []int163 r, r = nil, nil164 for i := range n {165 // amd64:`.*growslice\b`166 r = append(r, i)167 }168 // amd64:`.*moveSliceNoCapNoScan\b`169 return r170}171 172func Append14(n int) []int {173 var r []int174 r = []int{3, 4, 5}175 for i := range n {176 // amd64:`.*growsliceBufNoAlias\b`177 r = append(r, i)178 }179 // amd64:`.*moveSliceNoScan\b`180 return r181}182 183func Append15(n int) []int {184 r := []int{3, 4, 5}185 for i := range n {186 // amd64:`.*growsliceBufNoAlias\b`187 r = append(r, i)188 }189 // amd64:`.*moveSliceNoScan\b`190 return r191}192 193func Append16(r []int, n int) []int {194 for i := range n {195 // amd64:`.*growslice\b`196 r = append(r, i)197 }198 // amd64:`.*moveSliceNoCapNoScan\b`199 return r200}201 202func Append17(n int) []int {203 var r []int204 for i := range n {205 // amd64:`.*growsliceNoAlias\b`206 r = append(r, i)207 }208 for i, x := range r {209 println(i, x)210 }211 // amd64:`.*moveSliceNoCapNoScan\b`212 return r213}214 215//go:noinline216func useSlice(s []int) {217}218 