71 lines · plain
1// RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s2 3!s32i = !cir.int<s, 32>4 5module {6 7 cir.func @testFor(%arg0 : !cir.bool) {8 cir.for : cond {9 cir.condition(%arg0)10 } body {11 cir.yield12 } step {13 cir.yield14 }15 cir.return16 }17}18 19// CHECK: cir.func{{.*}} @testFor(%arg0: !cir.bool) {20// CHECK: cir.br ^bb[[#COND:]]21// CHECK: ^bb[[#COND]]:22// CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]]23// CHECK: ^bb[[#BODY]]:24// CHECK: cir.br ^bb[[#STEP:]]25// CHECK: ^bb[[#STEP]]:26// CHECK: cir.br ^bb[[#COND:]]27// CHECK: ^bb[[#EXIT]]:28// CHECK: cir.return29// CHECK: }30 31 // Test while cir.loop operation lowering.32 cir.func @testWhile(%arg0 : !cir.bool) {33 cir.while {34 cir.condition(%arg0)35 } do {36 cir.yield37 }38 cir.return39 }40 41// CHECK: cir.func{{.*}} @testWhile(%arg0: !cir.bool) {42// CHECK: cir.br ^bb[[#COND:]]43// CHECK: ^bb[[#COND]]:44// CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]]45// CHECK: ^bb[[#BODY]]:46// CHECK: cir.br ^bb[[#COND:]]47// CHECK: ^bb[[#EXIT]]:48// CHECK: cir.return49// CHECK: }50 51 52 // Test do-while cir.loop operation lowering.53 cir.func @testDoWhile(%arg0 : !cir.bool) {54 cir.do {55 cir.yield56 } while {57 cir.condition(%arg0)58 }59 cir.return60 }61 62// CHECK: cir.func{{.*}} @testDoWhile(%arg0: !cir.bool) {63// CHECK: cir.br ^bb[[#BODY:]]64// CHECK: ^bb[[#COND]]:65// CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]]66// CHECK: ^bb[[#BODY]]:67// CHECK: cir.br ^bb[[#COND:]]68// CHECK: ^bb[[#EXIT]]:69// CHECK: cir.return70// CHECK: }71