; Test that GCSE uses basicaa to do alias analysis, which is capable of
; disambiguating some obvious cases.  All loads should be removable in
; this testcase.

; RUN: opt < %s -basicaa -gvn -instcombine -dce -S | FileCheck %s

@A = global i32 7
@B = global i32 8

; CHECK:      define i32 @test()
; CHECK-NEXT:   store i32 123, i32* @B
; CHECK-NEXT:   ret i32 0

define i32 @test() {
	%A1 = load i32, i32* @A

	store i32 123, i32* @B  ; Store cannot alias @A

	%A2 = load i32, i32* @A
	%X = sub i32 %A1, %A2
	ret i32 %X
}

; CHECK:      define i32 @test2()
; CHECK-NEXT:   br label %Loop
; CHECK:      Loop:
; CHECK-NEXT:   store i32 0, i32* @B
; CHECK-NEXT:   br i1 true, label %out, label %Loop
; CHECK:      out:
; CHECK-NEXT:   ret i32 0

define i32 @test2() {
        %A1 = load i32, i32* @A
        br label %Loop
Loop:
        %AP = phi i32 [0, %0], [%X, %Loop]
        store i32 %AP, i32* @B  ; Store cannot alias @A

        %A2 = load i32, i32* @A
        %X = sub i32 %A1, %A2
        %c = icmp eq i32 %X, 0
        br i1 %c, label %out, label %Loop

out:
        ret i32 %X
}

declare void @external()

; CHECK:      define i32 @test3()
; CHECK-NEXT:   call void @external()
; CHECK-NEXT:   ret i32 7

define i32 @test3() {
	%X = alloca i32
	store i32 7, i32* %X
	call void @external()
	%V = load i32, i32* %X
	ret i32 %V
}

