Clang 3.6 
clang++ -S -emit-llvm -O2

; Function Attrs: nounwind uwtable
define void @_Z4initP3Out(%struct.Out* nocapture readonly %obj) #3 {
entry:
  %ptr = getelementptr inbounds %struct.Out* %obj, i64 0, i32 0
  %0 = load %struct.In** %ptr, align 8, !tbaa !1 
  %1 = bitcast %struct.In* %0 to i8*
  call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 24, i32 8, i1 false)
  ret void 
}

; Function Attrs: nounwind uwtable
define void @_Z5init2P3Out(%struct.Out* nocapture readonly %obj) #3 {
entry:
  %ptr = getelementptr inbounds %struct.Out* %obj, i64 0, i32 0
  %0 = load %struct.In** %ptr, align 8, !tbaa !1 
  %1 = bitcast %struct.In* %0 to i8*
  call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 24, i32 8, i1 false)
  ret void 
}


GCC 4.9.1
g++ -S -O2

_Z4initP3Out:
.LFB6856:
  .cfi_startproc
  movq  (%rdi), %rax
  movq  $0, (%rax)
  movq  $0, 8(%rax)
  movq  $0, 16(%rax)
  ret 

_Z5init2P3Out:
.LFB6857:
  .cfi_startproc
  movq  (%rdi), %rax
  movq  $0, (%rax)
  movq  $0, 8(%rax)
  movq  $0, 16(%rax)
  ret 
