1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -newgvn -S %s | FileCheck %s 3; Ensure that loads that bypass memory def-use chains get added as users of the new 4; MemoryDef. Otherwise this test will not pass memory verification because the value 5; of the load will not be reprocessed until verification. 6; ModuleID = 'bugpoint-reduced-simplified.bc' 7source_filename = "bugpoint-output-f242c4f.bc" 8target triple = "x86_64-apple-darwin16.7.0" 9 10@global = external global i32 #0 11@global.1 = external global i32 #0 12 13define void @hoge(i32 %arg) { 14; CHECK-LABEL: @hoge( 15; CHECK-NEXT: bb: 16; CHECK-NEXT: br label [[BB2:%.*]] 17; CHECK: bb1: 18; CHECK-NEXT: br label [[BB2]] 19; CHECK: bb2: 20; CHECK-NEXT: [[TMP:%.*]] = phi i32 [ 0, [[BB1:%.*]] ], [ [[ARG:%.*]], [[BB:%.*]] ] 21; CHECK-NEXT: br label [[BB6:%.*]] 22; CHECK: bb3: 23; CHECK-NEXT: [[TMP4:%.*]] = load i32, i32* @global, !h !0 24; CHECK-NEXT: unreachable 25; CHECK: bb6: 26; CHECK-NEXT: store i32 [[TMP]], i32* @global.1, !h !0 27; CHECK-NEXT: br i1 undef, label [[BB7:%.*]], label [[BB1]] 28; CHECK: bb7: 29; CHECK-NEXT: br i1 undef, label [[BB10:%.*]], label [[BB8:%.*]] 30; CHECK: bb8: 31; CHECK-NEXT: br i1 false, label [[BB9:%.*]], label [[BB3:%.*]] 32; CHECK: bb9: 33; CHECK-NEXT: store i8 undef, i8* null 34; CHECK-NEXT: br label [[BB3]] 35; CHECK: bb10: 36; CHECK-NEXT: store i32 0, i32* @global, !h !0 37; CHECK-NEXT: br label [[BB7]] 38; 39bb: 40 br label %bb2 41 42bb1: ; preds = %bb6 43 br label %bb2 44 45bb2: ; preds = %bb1, %bb 46 %tmp = phi i32 [ 0, %bb1 ], [ %arg, %bb ] 47 br label %bb6 48 49bb3: ; preds = %bb9, %bb8 50 %tmp4 = load i32, i32* @global, !h !0 51 %tmp5 = icmp eq i32 %tmp4, 0 52 unreachable 53 54bb6: ; preds = %bb2 55 store i32 %tmp, i32* @global.1, !h !0 56 br i1 undef, label %bb7, label %bb1 57 58bb7: ; preds = %bb10, %bb6 59 br i1 undef, label %bb10, label %bb8 60 61bb8: ; preds = %bb7 62 br i1 false, label %bb9, label %bb3 63 64bb9: ; preds = %bb8 65 call void @widget() 66 br label %bb3 67 68bb10: ; preds = %bb7 69 store i32 0, i32* @global, !h !0 70 br label %bb7 71} 72 73declare void @widget() 74 75attributes #0 = { align=4 } 76 77!0 = !{} 78