; 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
}

