brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · ecab2e6 Raw
50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes="loop(indvars),loop-vectorize" -S %s | FileCheck %s3 4target triple = "x86_64-unknown-linux-gnu"5 6; After indvars, the backedge taken count for %loop2 becomes 1, but SCEV7; retains the cached original BTC, as the loop is in dead code. Make sure8; LV does not crash when trying to select an interleave count for a loop with zero cost.9define void @pr54413(ptr %ptr.base) {10; CHECK-LABEL: @pr54413(11; CHECK-NEXT:  entry:12; CHECK-NEXT:    br label [[LOOP1:%.*]]13; CHECK:       loop1:14; CHECK-NEXT:    br i1 true, label [[LOOP1_LATCH:%.*]], label [[LOOP2_PREHEADER:%.*]]15; CHECK:       loop2.preheader:16; CHECK-NEXT:    br label [[LOOP2:%.*]]17; CHECK:       loop2:18; CHECK-NEXT:    [[PTR_NEXT:%.*]] = getelementptr inbounds i64, ptr [[PTR_BASE:%.*]], i64 119; CHECK-NEXT:    br i1 true, label [[LOOP2_EXIT:%.*]], label [[LOOP2]]20; CHECK:       loop2.exit:21; CHECK-NEXT:    [[PTR_NEXT_LCSSA:%.*]] = phi ptr [ [[PTR_NEXT]], [[LOOP2]] ]22; CHECK-NEXT:    br label [[LOOP1_LATCH]]23; CHECK:       loop1.latch:24; CHECK-NEXT:    br label [[LOOP1]]25;26entry:27  br label %loop128 29loop1:30  br i1 true, label %loop1.latch, label %loop2.preheader31 32loop2.preheader:33  br label %loop234 35loop2:36  %iv = phi i64 [ 0, %loop2.preheader ], [ %iv.next, %loop2 ]37  %ptr = phi ptr [ %ptr.base, %loop2.preheader ], [ %ptr.next, %loop2 ]38  %iv.next = add nuw nsw i64 %iv, 139  %ptr.next = getelementptr inbounds i64, ptr %ptr, i64 140  %cmp = icmp eq i64 %iv, 102441  br i1 %cmp, label %loop2.exit, label %loop242 43loop2.exit:44  %ptr.next.lcssa = phi ptr [ %ptr.next, %loop2 ]45  br label %loop1.latch46 47loop1.latch:48  br label %loop149}50