brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · a584189 Raw
53 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -passes=gvn -S | FileCheck %s3 4; loop.then is not reachable from loop, so we should be able to deduce that the5; store through %phi2 cannot alias %ptr1.6define void @test1(ptr %ptr1, ptr %ptr2) {7; CHECK-LABEL: define void @test1(8; CHECK-SAME: ptr [[PTR1:%.*]], ptr [[PTR2:%.*]]) {9; CHECK-NEXT:  [[ENTRY:.*]]:10; CHECK-NEXT:    [[GEP1:%.*]] = getelementptr inbounds i32, ptr [[PTR1]], i64 111; CHECK-NEXT:    [[VAL1_PRE:%.*]] = load i32, ptr [[GEP1]], align 412; CHECK-NEXT:    br label %[[LOOP:.*]]13; CHECK:       [[LOOP]]:14; CHECK-NEXT:    [[PHI1:%.*]] = phi ptr [ [[GEP1]], %[[ENTRY]] ], [ [[PHI2:%.*]], %[[LOOP_THEN:.*]] ]15; CHECK-NEXT:    br i1 false, label %[[LOOP_LOOP_THEN_CRIT_EDGE:.*]], label %[[LOOP_IF:.*]]16; CHECK:       [[LOOP_LOOP_THEN_CRIT_EDGE]]:17; CHECK-NEXT:    br label %[[LOOP_THEN]]18; CHECK:       [[LOOP_IF]]:19; CHECK-NEXT:    [[GEP2:%.*]] = getelementptr inbounds i32, ptr [[GEP1]], i64 120; CHECK-NEXT:    [[VAL2:%.*]] = load i32, ptr [[GEP2]], align 421; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[VAL1_PRE]], [[VAL2]]22; CHECK-NEXT:    br label %[[LOOP_THEN]]23; CHECK:       [[LOOP_THEN]]:24; CHECK-NEXT:    [[PHI2]] = phi ptr [ poison, %[[LOOP_LOOP_THEN_CRIT_EDGE]] ], [ [[GEP2]], %[[LOOP_IF]] ]25; CHECK-NEXT:    store i32 [[VAL1_PRE]], ptr [[PHI2]], align 426; CHECK-NEXT:    store i32 0, ptr [[PTR1]], align 427; CHECK-NEXT:    br label %[[LOOP]]28;29entry:30  br label %loop.preheader31 32loop.preheader:33  %gep1 = getelementptr inbounds i32, ptr %ptr1, i64 134  br label %loop35 36loop:37  %phi1 = phi ptr [ %gep1, %loop.preheader ], [ %phi2, %loop.then ]38  %val1 = load i32, ptr %phi139  br i1 false, label %loop.then, label %loop.if40 41loop.if:42  %gep2 = getelementptr inbounds i32, ptr %gep1, i64 143  %val2 = load i32, ptr %gep244  %cmp = icmp slt i32 %val1, %val245  br label %loop.then46 47loop.then:48  %phi2 = phi ptr [ %ptr2, %loop ], [ %gep2, %loop.if ]49  store i32 %val1, ptr %phi250  store i32 0, ptr %ptr151  br label %loop52}53