; RUN: llvm-as < %s | opt -instcombine -mem2reg | llvm-dis | not grep 'int 1'

; When propagating the load through the select, make sure that the load is
; inserted where the original load was, not where the select is.  Not doing
; so could produce incorrect results!

implementation

int %test(bool %C) {
	%X = alloca int
	%X2 = alloca int
	store int 1, int* %X
	store int 2, int* %X2

        %Y = select bool %C, int* %X, int* %X2
	store int 3, int* %X
        %Z = load int* %Y
        ret int %Z
}

