<p dir="auto">Please answer these questions before submitting your issue. Thanks!</p>
<ol dir="auto">
<li>What version of Go are you using (<code class="notranslate">go version</code>)?<br>
<code class="notranslate">go version devel +6c5352f 2016-04-08 18:40:11 +0000 linux/amd64</code></li>
<li>What operating system and processor architecture are you using (<code class="notranslate">go env</code>)?</li>
<li>What did you do?</li>
</ol>
<div class="highlight highlight-source-go notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="type C struct { a, b, c, d, e uint64 }

func New() *C { return &amp;C{} }"><pre class="notranslate"><span class="pl-k">type</span> <span class="pl-smi">C</span> <span class="pl-k">struct</span> { <span class="pl-c1">a</span>, <span class="pl-c1">b</span>, <span class="pl-c1">c</span>, <span class="pl-c1">d</span>, <span class="pl-c1">e</span> <span class="pl-smi">uint64</span> }

<span class="pl-k">func</span> <span class="pl-en">New</span>() <span class="pl-c1">*</span><span class="pl-smi">C</span> { <span class="pl-k">return</span> <span class="pl-c1">&amp;</span><span class="pl-smi">C</span>{} }</pre></div>
<ol dir="auto">
<li>What did you expect to see?</li>
</ol>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="0x001e 00030 (blah.go:8)        CALL    runtime.newobject(SB)
0x0023 00035 (blah.go:8)        MOVQ    8(SP), CX
0x0028 00040 (blah.go:8)        MOVQ    CX, &quot;&quot;.~r0+24(FP)"><pre class="notranslate"><code class="notranslate">0x001e 00030 (blah.go:8)        CALL    runtime.newobject(SB)
0x0023 00035 (blah.go:8)        MOVQ    8(SP), CX
0x0028 00040 (blah.go:8)        MOVQ    CX, "".~r0+24(FP)
</code></pre></div>
<ol dir="auto">
<li>What did you see instead?</li>
</ol>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="0x001e 00030 (blah.go:8)        CALL    runtime.newobject(SB)
0x0023 00035 (blah.go:8)        MOVQ    8(SP), CX
0x0028 00040 (blah.go:8)        MOVQ    $0, (CX)
0x002f 00047 (blah.go:8)        MOVQ    $0, 8(CX)
0x0037 00055 (blah.go:8)        MOVQ    $0, 16(CX)
0x003f 00063 (blah.go:8)        MOVQ    $0, 24(CX)
0x0047 00071 (blah.go:8)        MOVQ    $0, 32(CX)
0x004f 00079 (blah.go:8)        MOVQ    CX, &quot;&quot;.~r0+24(FP)"><pre class="notranslate"><code class="notranslate">0x001e 00030 (blah.go:8)        CALL    runtime.newobject(SB)
0x0023 00035 (blah.go:8)        MOVQ    8(SP), CX
0x0028 00040 (blah.go:8)        MOVQ    $0, (CX)
0x002f 00047 (blah.go:8)        MOVQ    $0, 8(CX)
0x0037 00055 (blah.go:8)        MOVQ    $0, 16(CX)
0x003f 00063 (blah.go:8)        MOVQ    $0, 24(CX)
0x0047 00071 (blah.go:8)        MOVQ    $0, 32(CX)
0x004f 00079 (blah.go:8)        MOVQ    CX, "".~r0+24(FP)
</code></pre></div>
<p dir="auto"><code class="notranslate">runtime.newobject()</code> already calls <code class="notranslate">memclr</code> as far as I can tell, shouldn't that be enough or am I misreading it?</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var sink *[10]byte
func f() {
    var x [10]byte
    sink = &amp;x
}"><pre class="notranslate"><code class="notranslate">var sink *[10]byte
func f() {
    var x [10]byte
    sink = &amp;x
}
</code></pre></div>
<p dir="auto">This function used to compile to something like:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="  p = mallocgc(...)
  sink = p"><pre class="notranslate"><code class="notranslate">  p = mallocgc(...)
  sink = p
</code></pre></div>
<p dir="auto">since the liveness fix (<a href="https://go-review.googlesource.com/c/23393/" rel="nofollow">https://go-review.googlesource.com/c/23393/</a>), it now compiles to:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="  p = mallocgc(...)
  ...code to zero *p...
  sink = p"><pre class="notranslate"><code class="notranslate">  p = mallocgc(...)
  ...code to zero *p...
  sink = p
</code></pre></div>
<p dir="auto">Figure out why the redundant zeroing has been added and then get rid of it.<br>
See <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="157690080" data-permission-text="Title is private" data-url="https://github.com/golang/go/issues/15902" data-hovercard-type="issue" data-hovercard-url="/golang/go/issues/15902/hovercard" href="https://github.com/golang/go/issues/15902">#15902</a> .</p>