; ModuleID = 'test.bc' %"3dgs1S" = type { i32 } define fastcc i32 @f() { entry: %s = alloca %"3dgs1S" ; <%"3dgs1S"*> [#uses=3] %tmp2 = alloca %"3dgs1S" ; <%"3dgs1S"*> [#uses=2] %tmp1 = getelementptr %"3dgs1S"* %s, i32 0, i32 0 ; [#uses=1] store i32 42, i32* %tmp1 %tmp3 = bitcast %"3dgs1S"* %tmp2 to i8* ; [#uses=1] %tmp4 = bitcast %"3dgs1S"* %s to i8* ; [#uses=1] call void @llvm.memcpy.i32( i8* %tmp3, i8* %tmp4, i32 4, i32 0 ) %tmp5 = call fastcc i32 @g( %"3dgs1S"* %tmp2 ) ; [#uses=1] ret i32 %tmp5 } declare void @llvm.memset.i32(i8*, i8, i32, i32) define fastcc i32 @g(%"3dgs1S"* %s) { entry: %tmp = getelementptr %"3dgs1S"* %s, i32 0, i32 0 ; [#uses=1] %tmp1 = load i32* %tmp ; [#uses=1] ret i32 %tmp1 } declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)