brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · e99f143 Raw
52 lines · plain
1; RUN: opt < %s -S -passes='loop(indvars),loop-unroll' -verify-dom-info | FileCheck %s2 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1"4target triple = "x86_64-unknown-linux-gnu"5 6; Make sure that this test doesn't crash because of dangling pointer in SCEV.7declare void @llvm.experimental.guard(i1, ...)8 9define void @test(ptr %p, ptr %p2, ptr %dest) {10 11; CHECK-LABEL: @test(12 13entry:14  br label %outer.loop15 16outer.loop:                                           ; preds = %outer.latch, %entry17  %local_2_ = phi i32 [ 10, %entry ], [ %tmp2, %outer.latch ]18  %tmp1 = icmp eq i32 %local_2_, 019  br label %inner.loop20 21outer.latch:                                          ; preds = %inner.latch22  %tmp2 = add i32 %local_2_, 123  br label %outer.loop24 25inner.loop:                                           ; preds = %inner.latch, %outer.loop26  %local_4_20 = phi i32 [ 7, %outer.loop ], [ %tmp15, %inner.latch ]27  %tmp6 = icmp eq i32 %local_4_20, 028  call void (i1, ...) @llvm.experimental.guard(i1 %tmp6) [ "deopt"() ]29  br label %innermost.loop30 31store.block:                                          ; preds = %innermost.loop32  store i64 %tmp20, ptr %dest, align 833  br i1 %tmp1, label %exit, label %inner.latch34 35inner.latch:                                   ; preds = %store.block36  %tmp15 = add i32 %local_4_20, 437  %tmp16 = icmp sgt i32 %tmp15, 26338  br i1 %tmp16, label %outer.latch, label %inner.loop39 40innermost.loop:                                          ; preds = %innermost.loop, %inner.loop41  %tmp17 = phi i64 [ 0, %inner.loop ], [ %tmp20, %innermost.loop ]42  %local_6_51 = phi i32 [ 1, %inner.loop ], [ %tmp21, %innermost.loop ]43  %ze = zext i32 %local_6_51 to i6444  %tmp20 = add i64 %tmp17, %ze45  %tmp21 = add nuw nsw i32 %local_6_51, 146  %tmp22 = icmp ugt i32 %local_6_51, 547  br i1 %tmp22, label %store.block, label %innermost.loop48 49exit:                                           ; preds = %store.block50  ret void51}52