; RUN: as < %s | opt -no-aa -ds-aa -load-vn -gcse | dis | not grep load
%T = type { int*, int* }

int %main() {
	%A = alloca %T
	%B = alloca { %T }
	%C = alloca %T*
	%Bp = getelementptr { %T }* %B, long 0, ubyte 0

	%i0 = alloca int
	%i1 = alloca int
	%Ap0 = getelementptr %T* %A, long 0, ubyte 0
	%Ap1 = getelementptr %T* %A, long 0, ubyte 1
	store int* %i0, int** %Ap0
	store int* %i1, int** %Ap1

	store int 0, int* %i0
	store int 1, int* %i1
	%RetVal = load int* %i0   ; This load should be deletable

	store %T* %A, %T** %C
	store %T* %Bp, %T** %C    ; This store was causing merging to happen!
	ret int %RetVal
}
