brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 1e7f569 Raw
98 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=loop-unroll -verify-loop-lcssa -S < %s | FileCheck %s3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-linux-gnu"6 7@b = external local_unnamed_addr global i32, align 48 9declare i1 @unknown(i32) readonly nounwind willreturn10 11define void @main() local_unnamed_addr #0 {12; CHECK-LABEL: @main(13; CHECK-NEXT:  ph1:14; CHECK-NEXT:    br label [[H1:%.*]]15; CHECK:       h1:16; CHECK-NEXT:    [[D_0:%.*]] = phi i32 [ [[TMP0:%.*]], [[LATCH1:%.*]] ], [ undef, [[PH1:%.*]] ]17; CHECK-NEXT:    br label [[PH2:%.*]]18; CHECK:       ph2:19; CHECK-NEXT:    br label [[H2:%.*]]20; CHECK:       h2:21; CHECK-NEXT:    br label [[H3:%.*]]22; CHECK:       h3:23; CHECK-NEXT:    [[C1:%.*]] = call i1 @unknown(i32 0)24; CHECK-NEXT:    br i1 [[C1]], label [[LATCH3:%.*]], label [[EXIT_LOOPEXIT:%.*]]25; CHECK:       latch3:26; CHECK-NEXT:    [[C2:%.*]] = call i1 @unknown(i32 0)27; CHECK-NEXT:    br i1 [[C2]], label [[EXIT3:%.*]], label [[H3]]28; CHECK:       exit3:29; CHECK-NEXT:    br label [[LATCH2:%.*]]30; CHECK:       latch2:31; CHECK-NEXT:    br label [[H3_1:%.*]]32; CHECK:       h3.1:33; CHECK-NEXT:    [[C1_1:%.*]] = call i1 @unknown(i32 1)34; CHECK-NEXT:    br i1 [[C1_1]], label [[LATCH3_1:%.*]], label [[EXIT_LOOPEXIT1:%.*]]35; CHECK:       latch3.1:36; CHECK-NEXT:    [[C2_1:%.*]] = call i1 @unknown(i32 1)37; CHECK-NEXT:    br i1 [[C2_1]], label [[EXIT3_1:%.*]], label [[H3_1]]38; CHECK:       exit3.1:39; CHECK-NEXT:    br label [[LATCH2_1:%.*]]40; CHECK:       latch2.1:41; CHECK-NEXT:    [[C3:%.*]] = call i1 @unknown(i32 [[D_0]])42; CHECK-NEXT:    br i1 [[C3]], label [[LATCH1]], label [[PH2]]43; CHECK:       latch1:44; CHECK-NEXT:    [[TMP0]] = load i32, ptr @b, align 445; CHECK-NEXT:    br label [[H1]]46; CHECK:       exit.loopexit:47; CHECK-NEXT:    [[D_0_LCSSA_PH:%.*]] = phi i32 [ [[D_0]], [[H3]] ]48; CHECK-NEXT:    br label [[EXIT:%.*]]49; CHECK:       exit.loopexit1:50; CHECK-NEXT:    [[D_0_LCSSA_PH2:%.*]] = phi i32 [ [[D_0]], [[H3_1]] ]51; CHECK-NEXT:    br label [[EXIT]]52; CHECK:       exit:53; CHECK-NEXT:    [[D_0_LCSSA:%.*]] = phi i32 [ [[D_0_LCSSA_PH]], [[EXIT_LOOPEXIT]] ], [ [[D_0_LCSSA_PH2]], [[EXIT_LOOPEXIT1]] ]54; CHECK-NEXT:    ret void55;56ph1:57  br label %h158 59h1:60  %d.0 = phi i32 [ %1, %latch1 ], [ undef, %ph1 ]61  br label %ph262 63ph2:64  br label %h265 66h2:67  %0 = phi i32 [ 0, %ph2 ], [ %inc, %latch2 ]68  br label %h369 70h3:71  %c1 = call i1 @unknown(i32 %0)72  br i1 %c1, label %latch3, label %exit73 74latch3:75  %c2 = call i1 @unknown(i32 %0)76  br i1 %c2, label %exit3, label %h377 78exit3:79  br label %latch280 81latch2:82  %inc = add nuw nsw i32 %0, 183  %cmp = icmp slt i32 %inc, 284  br i1 %cmp, label %h2, label %exit285 86exit2:87  %c3 = call i1 @unknown(i32 %d.0)88  br i1 %c3, label %latch1, label %ph289 90latch1:                 ; preds = %exit291  %1 = load i32, ptr @b, align 492  br label %h193 94exit:95  %d.0.lcssa = phi i32 [ %d.0, %h3 ]96  ret void97}98