15e7e499bSNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*07e34d2dSMatt Arsenault; RUN: opt -S -passes=jump-threading < %s | FileCheck %s 35e7e499bSNikita Popov 483d50527SMatt Arsenaultdefine void @test(ptr %ptr) { 55e7e499bSNikita Popov; CHECK-LABEL: @test( 65e7e499bSNikita Popov; CHECK-NEXT: entry: 75e7e499bSNikita Popov; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !0) 85e7e499bSNikita Popov; CHECK-NEXT: br label [[LOOP:%.*]] 95e7e499bSNikita Popov; CHECK: loop: 105e7e499bSNikita Popov; CHECK-NEXT: [[I:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[I_INC:%.*]], [[LATCH:%.*]] ] 115e7e499bSNikita Popov; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[I]], 100 125e7e499bSNikita Popov; CHECK-NEXT: br i1 [[C]], label [[EXIT:%.*]], label [[LATCH]] 135e7e499bSNikita Popov; CHECK: latch: 145e7e499bSNikita Popov; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !3) 1583d50527SMatt Arsenault; CHECK-NEXT: store i8 0, ptr [[PTR:%.*]], align 1, !noalias !0 1683d50527SMatt Arsenault; CHECK-NEXT: store i8 1, ptr [[PTR]], align 1, !noalias !3 175e7e499bSNikita Popov; CHECK-NEXT: [[I_INC]] = add i32 [[I]], 1 185e7e499bSNikita Popov; CHECK-NEXT: br label [[LOOP]] 195e7e499bSNikita Popov; CHECK: exit: 205e7e499bSNikita Popov; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata !5) 2183d50527SMatt Arsenault; CHECK-NEXT: store i8 0, ptr [[PTR]], align 1, !noalias !0 2283d50527SMatt Arsenault; CHECK-NEXT: store i8 1, ptr [[PTR]], align 1, !noalias !5 235e7e499bSNikita Popov; CHECK-NEXT: ret void 245e7e499bSNikita Popov; 255e7e499bSNikita Popoventry: 265e7e499bSNikita Popov call void @llvm.experimental.noalias.scope.decl(metadata !0) 275e7e499bSNikita Popov br label %loop 285e7e499bSNikita Popov 295e7e499bSNikita Popovloop: 305e7e499bSNikita Popov %i = phi i32 [ 0, %entry ], [ %i.inc, %latch ] 315e7e499bSNikita Popov %c = icmp eq i32 %i, 100 325e7e499bSNikita Popov br i1 %c, label %if, label %latch 335e7e499bSNikita Popov 345e7e499bSNikita Popovif: 355e7e499bSNikita Popov br label %latch 365e7e499bSNikita Popov 375e7e499bSNikita Popovlatch: 385e7e499bSNikita Popov %p = phi i1 [ true, %if ], [ false, %loop ] 395e7e499bSNikita Popov call void @llvm.experimental.noalias.scope.decl(metadata !3) 4083d50527SMatt Arsenault store i8 0, ptr %ptr, !noalias !0 4183d50527SMatt Arsenault store i8 1, ptr %ptr, !noalias !3 425e7e499bSNikita Popov %i.inc = add i32 %i, 1 435e7e499bSNikita Popov br i1 %p, label %exit, label %loop 445e7e499bSNikita Popov 455e7e499bSNikita Popovexit: 465e7e499bSNikita Popov ret void 475e7e499bSNikita Popov} 485e7e499bSNikita Popov 495e7e499bSNikita Popovdeclare void @llvm.experimental.noalias.scope.decl(metadata) 505e7e499bSNikita Popov 515e7e499bSNikita Popov!0 = !{!1} 525e7e499bSNikita Popov!1 = distinct !{!1, !2, !"scope1"} 535e7e499bSNikita Popov!2 = distinct !{!2, !"domain"} 545e7e499bSNikita Popov!3 = !{!4} 555e7e499bSNikita Popov!4 = distinct !{!4, !2, !"scope2"} 565e7e499bSNikita Popov 575e7e499bSNikita Popov; CHECK: !0 = !{!1} 585e7e499bSNikita Popov; CHECK: !1 = distinct !{!1, !2, !"scope1"} 595e7e499bSNikita Popov; CHECK: !2 = distinct !{!2, !"domain"} 605e7e499bSNikita Popov; CHECK: !3 = !{!4} 615e7e499bSNikita Popov; CHECK: !4 = distinct !{!4, !2, !"scope2"} 625e7e499bSNikita Popov; CHECK: !5 = !{!6} 635e7e499bSNikita Popov; CHECK: !6 = distinct !{!6, !2, !"scope2:thread"} 64