1; RUN: opt -passes=gvn -S < %s | FileCheck %s 2 3@a = external local_unnamed_addr global i32, align 4 4@b = external local_unnamed_addr global i32, align 4 5 6; Function Attrs: nounwind readnone 7declare ptr @j() local_unnamed_addr #0 8 9; CHECK: define {{.*}}@k() 10 11define i64 @k() local_unnamed_addr { 12bb: 13 br i1 undef, label %bb10.preheader, label %bb3 14 15bb10.preheader: ; preds = %bb 16 br label %bb13 17 18bb3: ; preds = %bb 19 %i4 = load i32, ptr @a, align 4 20 %i5.not = icmp eq i32 %i4, 0 21 br label %bb7 22 23bb7: ; preds = %bb3 24 %i8 = tail call ptr @j() 25 br label %bb37 26 27bb13: ; preds = %bb34, %bb10.preheader 28 br i1 undef, label %bb30thread-pre-split, label %bb16 29 30bb16: ; preds = %bb13 31 %i17 = tail call ptr @j() 32 br i1 undef, label %bb22thread-pre-split, label %bb37.loopexit 33 34bb22thread-pre-split: ; preds = %bb16 35 br label %bb27 36 37bb27: ; preds = %bb22thread-pre-split 38 br i1 undef, label %bb30thread-pre-split, label %bb37.loopexit 39 40bb30thread-pre-split: ; preds = %bb27, %bb13 41 %i31.pr = load i32, ptr @a, align 4 42 %i32.not2 = icmp eq i32 %i31.pr, 0 43 br label %bb34 44 45bb34: ; preds = %bb30thread-pre-split 46 br i1 undef, label %bb37.loopexit, label %bb13 47 48bb37.loopexit: ; preds = %bb34, %bb27, %bb16 49 br label %bb37 50 51bb37: ; preds = %bb37.loopexit, %bb7 52 %i38 = load i32, ptr @a, align 4 53 store i32 %i38, ptr @b, align 4 54 %i39 = tail call ptr @j() 55 unreachable 56} 57 58attributes #0 = { nounwind readnone } 59