; PR1226
; RUN: opt < %s -scalarrepl -S | grep {ret i32 16843009}
; RUN: opt < %s -scalarrepl -S | not grep alloca
; RUN: opt < %s -scalarrepl -instcombine -S | grep {ret i16 514}

target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "i686-apple-darwin8"
	%struct.bar = type { %struct.foo, i64, double }
	%struct.foo = type { i32, i32 }


define i32 @test1(%struct.foo* %P) {
entry:
	%L = alloca %struct.foo, align 8		; <%struct.foo*> [#uses=2]
	%L2 = bitcast %struct.foo* %L to i8*		; <i8*> [#uses=1]
	%tmp13 = bitcast %struct.foo* %P to i8*		; <i8*> [#uses=1]
        call void @llvm.memcpy.p0i8.p0i8.i32(i8* %L2, i8* %tmp13, i32 8, i32 4, i1 false)
	%tmp4 = getelementptr %struct.foo* %L, i32 0, i32 0		; <i32*> [#uses=1]
	%tmp5 = load i32* %tmp4		; <i32> [#uses=1]
	ret i32 %tmp5
}


define i32 @test2() {
entry:
	%L = alloca [4 x %struct.foo], align 16		; <[4 x %struct.foo]*> [#uses=2]
	%L12 = bitcast [4 x %struct.foo]* %L to i8*		; <i8*> [#uses=1]
        call void @llvm.memset.p0i8.i32(i8* %L12, i8 0, i32 32, i32 16, i1 false)
	%tmp4 = getelementptr [4 x %struct.foo]* %L, i32 0, i32 0, i32 0		; <i32*> [#uses=1]
	%tmp5 = load i32* %tmp4		; <i32> [#uses=1]
	ret i32 %tmp5
}


define i32 @test3() {
entry:
	%B = alloca %struct.bar, align 16		; <%struct.bar*> [#uses=4]
	%B1 = bitcast %struct.bar* %B to i8*		; <i8*> [#uses=1]
	call void @llvm.memset.p0i8.i32(i8* %B1, i8 1, i32 24, i32 16, i1 false)
	%tmp3 = getelementptr %struct.bar* %B, i32 0, i32 0, i32 0		; <i32*> [#uses=1]
	store i32 1, i32* %tmp3
	%tmp4 = getelementptr %struct.bar* %B, i32 0, i32 2		; <double*> [#uses=1]
	store double 1.000000e+01, double* %tmp4
	%tmp6 = getelementptr %struct.bar* %B, i32 0, i32 0, i32 1		; <i32*> [#uses=1]
	%tmp7 = load i32* %tmp6		; <i32> [#uses=1]
	ret i32 %tmp7
}


	%struct.f = type { i32, i32, i32, i32, i32, i32 }

define i16 @test4() nounwind {
entry:
	%A = alloca %struct.f, align 8		; <%struct.f*> [#uses=3]
	%0 = getelementptr %struct.f* %A, i32 0, i32 0		; <i32*> [#uses=1]
	store i32 1, i32* %0, align 8
	%1 = getelementptr %struct.f* %A, i32 0, i32 1		; <i32*> [#uses=1]
	%2 = bitcast i32* %1 to i8*		; <i8*> [#uses=1]
	call void @llvm.memset.p0i8.i32(i8* %2, i8 2, i32 12, i32 4, i1 false)
	%3 = getelementptr %struct.f* %A, i32 0, i32 2		; <i32*> [#uses=1]
	%4 = load i32* %3, align 8		; <i32> [#uses=1]
	%retval12 = trunc i32 %4 to i16		; <i16> [#uses=1]
	ret i16 %retval12
}
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind

declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind