; Test that PHI nodes and select instructions do not necessarily make stuff
; non-constant.

; RUN: opt < %s -globalopt -S | not grep global

@X = internal global i32 4              ; <i32*> [#uses=2]
@Y = internal global i32 5              ; <i32*> [#uses=2]

define i32 @test1(i1 %C) {
        %P = select i1 %C, i32* @X, i32* @Y             ; <i32*> [#uses=1]
        %V = load i32* %P               ; <i32> [#uses=1]
        ret i32 %V
}

define i32 @test2(i1 %C) {
; <label>:0
        br i1 %C, label %T, label %Cont

T:              ; preds = %0
        br label %Cont

Cont:           ; preds = %T, %0
        %P = phi i32* [ @X, %0 ], [ @Y, %T ]            ; <i32*> [#uses=1]
        %V = load i32* %P               ; <i32> [#uses=1]
        ret i32 %V
}





