46 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -S -passes="print<assumptions>,gvn-sink,loop-unroll" -unroll-count=3 | FileCheck %s3;4; This crashed because the cached assumption was replaced and the replacement5; was then in the cache twice.6;7; PR490438 9@g = external global i3210 11define void @main() {12; CHECK-LABEL: @main(13; CHECK-NEXT: bb:14; CHECK-NEXT: br label [[BB4_I:%.*]]15; CHECK: bb4.i:16; CHECK-NEXT: [[I1_I:%.*]] = load volatile i32, ptr @g, align 417; CHECK-NEXT: [[I32_I:%.*]] = icmp eq i32 [[I1_I]], 018; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I]])19; CHECK-NEXT: [[I1_I_1:%.*]] = load volatile i32, ptr @g, align 420; CHECK-NEXT: [[I32_I_1:%.*]] = icmp eq i32 [[I1_I_1]], 021; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I_1]])22; CHECK-NEXT: [[I1_I_2:%.*]] = load volatile i32, ptr @g, align 423; CHECK-NEXT: [[I32_I_2:%.*]] = icmp eq i32 [[I1_I_2]], 024; CHECK-NEXT: call void @llvm.assume(i1 [[I32_I_2]])25; CHECK-NEXT: br label [[BB4_I]], !llvm.loop [[LOOP0:![0-9]+]]26; CHECK: func_1.exit:27; CHECK-NEXT: unreachable28;29bb:30 %i1.i = load volatile i32, ptr @g31 %i32.i = icmp eq i32 %i1.i, 032 call void @llvm.assume(i1 %i32.i) #333 br label %bb4.i34 35bb4.i: ; preds = %bb4.i, %bb36 %i.i = load volatile i32, ptr @g37 %i3.i = icmp eq i32 %i.i, 038 call void @llvm.assume(i1 %i3.i) #339 br label %bb4.i40 41func_1.exit: ; No predecessors!42 unreachable43}44 45declare void @llvm.assume(i1)46