| // RUN: cir-opt %s -cir-flatten-cfg -o - | FileCheck %s |
| |
| !s32i = !cir.int<s, 32> |
| |
| module { |
| |
| cir.func @testFor(%arg0 : !cir.bool) { |
| cir.for : cond { |
| cir.condition(%arg0) |
| } body { |
| cir.yield |
| } step { |
| cir.yield |
| } |
| cir.return |
| } |
| } |
| |
| // CHECK: cir.func{{.*}} @testFor(%arg0: !cir.bool) { |
| // CHECK: cir.br ^bb[[#COND:]] |
| // CHECK: ^bb[[#COND]]: |
| // CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]] |
| // CHECK: ^bb[[#BODY]]: |
| // CHECK: cir.br ^bb[[#STEP:]] |
| // CHECK: ^bb[[#STEP]]: |
| // CHECK: cir.br ^bb[[#COND:]] |
| // CHECK: ^bb[[#EXIT]]: |
| // CHECK: cir.return |
| // CHECK: } |
| |
| // Test while cir.loop operation lowering. |
| cir.func @testWhile(%arg0 : !cir.bool) { |
| cir.while { |
| cir.condition(%arg0) |
| } do { |
| cir.yield |
| } |
| cir.return |
| } |
| |
| // CHECK: cir.func{{.*}} @testWhile(%arg0: !cir.bool) { |
| // CHECK: cir.br ^bb[[#COND:]] |
| // CHECK: ^bb[[#COND]]: |
| // CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]] |
| // CHECK: ^bb[[#BODY]]: |
| // CHECK: cir.br ^bb[[#COND:]] |
| // CHECK: ^bb[[#EXIT]]: |
| // CHECK: cir.return |
| // CHECK: } |
| |
| |
| // Test do-while cir.loop operation lowering. |
| cir.func @testDoWhile(%arg0 : !cir.bool) { |
| cir.do { |
| cir.yield |
| } while { |
| cir.condition(%arg0) |
| } |
| cir.return |
| } |
| |
| // CHECK: cir.func{{.*}} @testDoWhile(%arg0: !cir.bool) { |
| // CHECK: cir.br ^bb[[#BODY:]] |
| // CHECK: ^bb[[#COND]]: |
| // CHECK: cir.brcond %arg0 ^bb[[#BODY:]], ^bb[[#EXIT:]] |
| // CHECK: ^bb[[#BODY]]: |
| // CHECK: cir.br ^bb[[#COND:]] |
| // CHECK: ^bb[[#EXIT]]: |
| // CHECK: cir.return |
| // CHECK: } |