]> Cypherpunks repositories - gostls13.git/commitdiff
test/codegen: port structs test to codegen
authorAlberto Donizetti <alb.donizetti@gmail.com>
Fri, 16 Mar 2018 11:05:18 +0000 (12:05 +0100)
committerAlberto Donizetti <alb.donizetti@gmail.com>
Sun, 18 Mar 2018 16:53:53 +0000 (16:53 +0000)
And delete them from asm_test.

Change-Id: Ia286239a3d8f3915f2ca25dbcb39f3354a4f8aea
Reviewed-on: https://go-review.googlesource.com/101138
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/compile/internal/gc/asm_test.go
test/codegen/structs.go [new file with mode: 0644]

index 29033db7ee247c379a4b5b21a321ed64136b2415..f2082641093a2f4c342b6ca0443f6ba63b81e5dd 100644 (file)
@@ -279,43 +279,6 @@ var linuxAMD64Tests = []*asmTest{
                `,
                pos: []string{"\tSHLQ\t\\$5,", "\tLEAQ\t\\(.*\\)\\(.*\\*2\\),"},
        },
-       // Structure zeroing.  See issue #18370.
-       {
-               fn: `
-               type T1 struct {
-                       a, b, c int
-               }
-               func $(t *T1) {
-                       *t = T1{}
-               }
-               `,
-               pos: []string{"\tXORPS\tX., X", "\tMOVUPS\tX., \\(.*\\)", "\tMOVQ\t\\$0, 16\\(.*\\)"},
-       },
-       // SSA-able composite literal initialization. Issue 18872.
-       {
-               fn: `
-               type T18872 struct {
-                       a, b, c, d int
-               }
-
-               func f18872(p *T18872) {
-                       *p = T18872{1, 2, 3, 4}
-               }
-               `,
-               pos: []string{"\tMOVQ\t[$]1", "\tMOVQ\t[$]2", "\tMOVQ\t[$]3", "\tMOVQ\t[$]4"},
-       },
-       // Also test struct containing pointers (this was special because of write barriers).
-       {
-               fn: `
-               type T2 struct {
-                       a, b, c *int
-               }
-               func f19(t *T2) {
-                       *t = T2{}
-               }
-               `,
-               pos: []string{"\tXORPS\tX., X", "\tMOVUPS\tX., \\(.*\\)", "\tMOVQ\t\\$0, 16\\(.*\\)", "\tCALL\truntime\\.gcWriteBarrier\\(SB\\)"},
-       },
        {
                fn: `
                func f33(m map[int]int) int {
diff --git a/test/codegen/structs.go b/test/codegen/structs.go
new file mode 100644 (file)
index 0000000..b81ad67
--- /dev/null
@@ -0,0 +1,46 @@
+// 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
+
+// This file contains code generation tests related to the handling of
+// struct types.
+
+// ------------- //
+//    Zeroing    //
+// ------------- //
+
+type Z1 struct {
+       a, b, c int
+}
+
+func Zero1(t *Z1) { // Issue #18370
+       // amd64:`XORPS\tX., X`,`MOVUPS\tX., \(.*\)`,`MOVQ\t\$0, 16\(.*\)`
+       *t = Z1{}
+}
+
+type Z2 struct {
+       a, b, c *int
+}
+
+func Zero2(t *Z2) {
+       // amd64:`XORPS\tX., X`,`MOVUPS\tX., \(.*\)`,`MOVQ\t\$0, 16\(.*\)`
+       // amd64:`.*runtime[.]gcWriteBarrier\(SB\)`
+       *t = Z2{}
+}
+
+// ------------------ //
+//    Initializing    //
+// ------------------ //
+
+type I1 struct {
+       a, b, c, d int
+}
+
+func Init1(p *I1) { // Issue #18872
+       // amd64:`MOVQ\t[$]1`,`MOVQ\t[$]2`,`MOVQ\t[$]3`,`MOVQ\t[$]4`
+       *p = I1{1, 2, 3, 4}
+}