; This testcase tests for a problem where LICM hoists loads out of a loop 
; despite the fact that calls to unknown functions may modify what is being 
; loaded from.  Basically if the load gets hoisted, the subtract gets turned
; into a constant zero.
;
; RUN: opt < %s -licm -gvn -instcombine -S | grep load

@X = global i32 7		; <i32*> [#uses=2]

declare void @foo()

define i32 @test(i1 %c) {
	%A = load i32* @X		; <i32> [#uses=1]
	br label %Loop
Loop:		; preds = %Loop, %0
	call void @foo( )
        ;; Should not hoist this load!
	%B = load i32* @X		; <i32> [#uses=1]
	br i1 %c, label %Loop, label %Out
Out:		; preds = %Loop
	%C = sub i32 %A, %B		; <i32> [#uses=1]
	ret i32 %C
}
