; RUN: opt < %s -globalopt -disable-output

        %struct._list = type { i32*, %struct._list* }
        %struct._play = type { i32, i32*, %struct._list*, %struct._play* }
@nrow = internal global i32 0           ; <i32*> [#uses=2]

define void @make_play() {
entry:
        br label %cond_true16.i

cond_true16.i:          ; preds = %cond_true16.i, %entry
        %low.0.in.i.0 = phi i32* [ @nrow, %entry ], [ null, %cond_true16.i ]            ; <i32*> [#uses=1]
        %low.0.i = load i32* %low.0.in.i.0              ; <i32> [#uses=0]
        br label %cond_true16.i
}

define void @make_wanted() {
entry:
        unreachable
}

define void @get_good_move() {
entry:
        ret void
}

define void @main() {
entry:
        store i32 8, i32* @nrow
        tail call void @make_play( )
        ret void
}

