; RUN: opt -licm -S < %s | FileCheck %s ; REQUIRES: asserts @global1 = external global i64, align 8 @global2 = external global [3 x [8 x [8 x { i32, i64, i8, i8, i16, i32 }]]], align 8 ; CHECK-LABEL: @f0() define void @f0() { bb: br label %bb18.i bb18.i: ; preds = %bb49.us.i.us, %bb tail call void @f1() br i1 undef, label %.exit.loopexit, label %bb49.preheader.i bb49.preheader.i: ; preds = %bb18.i br i1 undef, label %bb49.us.preheader.i, label %bb78.loopexit3.i bb49.us.preheader.i: ; preds = %bb49.preheader.i br label %bb49.us.i.us bb49.us.i.preheader: ; No predecessors! br label %.exit bb49.us.i.us: ; preds = %bb49.us.preheader.i br label %bb18.i bb78.loopexit3.i: ; preds = %bb49.preheader.i store i64 0, i64* @global1, align 8 br label %.exit .exit.loopexit: ; preds = %bb18.i br label %.exit .exit: ; preds = %.exit.loopexit, %bb78.loopexit3.i, %bb49.us.i.preheader br i1 undef, label %bb4.i.us.preheader, label %bb4.i bb4.i.us.preheader: ; preds = %.exit br label %bb4.i.us bb4.i.us: ; preds = %bb4.i.us, %bb4.i.us.preheader store i32 0, i32* undef, align 4 store i32 undef, i32* getelementptr inbounds ([3 x [8 x [8 x { i32, i64, i8, i8, i16, i32 }]]], [3 x [8 x [8 x { i32, i64, i8, i8, i16, i32 }]]]* @global2, i64 0, i64 0, i64 6, i64 6, i32 0), align 8 br label %bb4.i.us bb4.i: ; preds = %.exit ret void } declare void @f1()