118 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes='loop(indvars),verify,loop(loop-rotate,loop-idiom)' < %s | FileCheck %s3; RUN: opt -S -passes='loop(indvars),verify,loop(loop-rotate,loop-idiom)' -verify-memoryssa < %s | FileCheck %s4target triple = "x86_64-unknown-linux-gnu"5 6; Verify that we invalidate SCEV properly.7 8define void @test_01() {9; CHECK-LABEL: @test_01(10; CHECK-NEXT: entry:11; CHECK-NEXT: br label [[LBL1:%.*]]12; CHECK: lbl1:13; CHECK-NEXT: br label [[FOR_COND:%.*]]14; CHECK: for.cond:15; CHECK-NEXT: br i1 false, label [[FOR_BODY3_LR_PH:%.*]], label [[FOR_COND_FOR_END5_CRIT_EDGE:%.*]]16; CHECK: for.body3.lr.ph:17; CHECK-NEXT: br label [[FOR_BODY3:%.*]]18; CHECK: for.cond1:19; CHECK-NEXT: br i1 false, label [[FOR_BODY3]], label [[FOR_COND1_FOR_END5_CRIT_EDGE:%.*]]20; CHECK: for.body3:21; CHECK-NEXT: br i1 false, label [[IF_THEN:%.*]], label [[FOR_COND1:%.*]]22; CHECK: if.then:23; CHECK-NEXT: br label [[LBL1]]24; CHECK: for.cond.for.end5_crit_edge:25; CHECK-NEXT: br label [[FOR_END5:%.*]]26; CHECK: for.cond1.for.end5_crit_edge:27; CHECK-NEXT: br label [[FOR_END5]]28; CHECK: for.end5:29; CHECK-NEXT: ret void30;31entry:32 br label %lbl133 34lbl1: ; preds = %if.then, %entry35 br label %for.cond36 37for.cond: ; preds = %lbl138 br label %for.cond139 40for.cond1: ; preds = %if.end, %for.cond41 br i1 false, label %for.body3, label %for.end542 43for.body3: ; preds = %for.cond144 br i1 false, label %if.then, label %if.end45 46if.then: ; preds = %for.body347 br label %lbl148 49if.end: ; preds = %for.body350 br label %for.cond151 52for.end5: ; preds = %for.cond153 ret void54}55 56define void @test_02() {57; CHECK-LABEL: @test_02(58; CHECK-NEXT: entry:59; CHECK-NEXT: br label [[LBL1:%.*]]60; CHECK: lbl1:61; CHECK-NEXT: br label [[FOR_COND:%.*]]62; CHECK: for.cond:63; CHECK-NEXT: br i1 false, label [[IF_THEN:%.*]], label [[IF_END7:%.*]]64; CHECK: if.then:65; CHECK-NEXT: br i1 false, label [[FOR_BODY_LR_PH:%.*]], label [[IF_THEN_FOR_END6_CRIT_EDGE:%.*]]66; CHECK: for.body.lr.ph:67; CHECK-NEXT: br label [[FOR_BODY:%.*]]68; CHECK: for.body:69; CHECK-NEXT: br i1 false, label [[IF_THEN3:%.*]], label [[IF_END:%.*]]70; CHECK: if.then3:71; CHECK-NEXT: br label [[LBL1]]72; CHECK: if.end:73; CHECK-NEXT: br label [[FOR_COND4:%.*]]74; CHECK: for.cond4:75; CHECK-NEXT: br i1 false, label [[FOR_BODY]], label [[FOR_COND1_FOR_END6_CRIT_EDGE:%.*]]76; CHECK: if.then.for.end6_crit_edge:77; CHECK-NEXT: br label [[FOR_END6:%.*]]78; CHECK: for.cond1.for.end6_crit_edge:79; CHECK-NEXT: br label [[FOR_END6]]80; CHECK: for.end6:81; CHECK-NEXT: ret void82; CHECK: if.end7:83; CHECK-NEXT: unreachable84;85entry:86 br label %lbl187 88lbl1: ; preds = %if.then3, %entry89 br label %for.cond90 91for.cond: ; preds = %lbl192 br i1 false, label %if.then, label %if.end793 94if.then: ; preds = %for.cond95 br label %for.cond196 97for.cond1: ; preds = %for.cond4, %if.then98 br i1 false, label %for.body, label %for.end699 100for.body: ; preds = %for.cond1101 br i1 false, label %if.then3, label %if.end102 103if.then3: ; preds = %for.body104 br label %lbl1105 106if.end: ; preds = %for.body107 br label %for.cond4108 109for.cond4: ; preds = %if.end110 br label %for.cond1111 112for.end6: ; preds = %for.cond1113 ret void114 115if.end7: ; preds = %for.cond116 unreachable117}118