Source file test/codegen/issue52635.go

     1  // asmcheck
     2  
     3  // Copyright 2022 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Test that optimized range memclr works with pointers to arrays.
     8  // The clears get inlined, see https://github.com/golang/go/issues/56997
     9  
    10  package codegen
    11  
    12  type T struct {
    13  	a *[10]int
    14  	b [10]int
    15  	s []int
    16  }
    17  
    18  func (t *T) f() {
    19  	// amd64:-".*runtime.memclrNoHeapPointers"
    20  	// amd64:"DUFFZERO"
    21  	for i := range t.a {
    22  		t.a[i] = 0
    23  	}
    24  
    25  	// amd64:-".*runtime.memclrNoHeapPointers"
    26  	// amd64:"DUFFZERO"
    27  	for i := range *t.a {
    28  		t.a[i] = 0
    29  	}
    30  
    31  	// amd64:-".*runtime.memclrNoHeapPointers"
    32  	// amd64:"DUFFZERO"
    33  	for i := range t.a {
    34  		(*t.a)[i] = 0
    35  	}
    36  
    37  	// amd64:-".*runtime.memclrNoHeapPointers"
    38  	// amd64:"DUFFZERO"
    39  	for i := range *t.a {
    40  		(*t.a)[i] = 0
    41  	}
    42  
    43  	// amd64:-".*runtime.memclrNoHeapPointers"
    44  	// amd64:"DUFFZERO"
    45  	for i := range t.b {
    46  		t.b[i] = 0
    47  	}
    48  
    49  	// amd64:".*runtime.memclrNoHeapPointers"
    50  	for i := range t.s {
    51  		t.s[i] = 0
    52  	}
    53  }
    54  

View as plain text