github.com/amarpal/go-tools@v0.0.0-20240422043104-40142f59f616/staticcheck/sa1027/testdata/src/example.com/CheckAtomicAlignment/atomic32.go (about)

     1  // +build 386 arm armbe mips mipsle ppc s390 sparc riscv
     2  
     3  package pkg
     4  
     5  import "sync/atomic"
     6  
     7  type T struct {
     8  	A int64
     9  	B int32
    10  	C int64
    11  }
    12  
    13  func fn() {
    14  	var v T
    15  	atomic.AddInt64(&v.A, 0)
    16  	atomic.AddInt64(&v.C, 0) //@ diag(`address of non 64-bit aligned field C passed to sync/atomic.AddInt64`)
    17  	atomic.LoadInt64(&v.C)   //@ diag(`address of non 64-bit aligned field C passed to sync/atomic.LoadInt64`)
    18  }
    19  
    20  func fn2(t *T) {
    21  	addr := &t.C
    22  	if true {
    23  		atomic.LoadInt64(addr) //@ diag(`address of non 64-bit`)
    24  	} else {
    25  		_ = addr
    26  	}
    27  }