brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 04724f3 Raw
114 lines · plain
1 // RUN: cir-opt %s -cir-hoist-allocas -o - | FileCheck %s2 3!s32i = !cir.int<s, 32>4#true = #cir.bool<true> : !cir.bool5 6module {7  cir.func @l1() {8    cir.scope {9      %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}10      %1 = cir.const #cir.int<0> : !s32i11      cir.store %1, %0 : !s32i, !cir.ptr<!s32i>12      cir.for : cond {13        %2 = cir.const #true14        cir.condition(%2)15      } body {16       cir.yield17      } step {18        cir.yield19      }20    }21    cir.return22  }23  // CHECK:      cir.func{{.*}} @l124  // CHECK-NEXT:   %[[I:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}25  // CHECK-NEXT:   cir.scope {26  // CHECK-NEXT:     %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i27  // CHECK-NEXT:     cir.store %[[ZERO]], %[[I]] : !s32i, !cir.ptr<!s32i>28  // CHECK-NEXT:     cir.for : cond {29  // CHECK-NEXT:       %[[TRUE:.*]] = cir.const #true30  // CHECK-NEXT:       cir.condition(%[[TRUE]])31  // CHECK-NEXT:     } body {32  // CHECK-NEXT:       cir.yield33  // CHECK-NEXT:     } step {34  // CHECK-NEXT:       cir.yield35  // CHECK-NEXT:     }36  // CHECK-NEXT:   }37  // CHECK-NEXT:   cir.return38  // CHECK-NEXT: }39 40  cir.func @l2() {41    cir.scope {42      cir.for : cond {43        %0 = cir.const #true44        cir.condition(%0)45      } body {46        cir.scope {47          %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}48          %2 = cir.const #cir.int<0> : !s32i49          cir.store %2, %1 : !s32i, !cir.ptr<!s32i>50        }51       cir.yield52      } step {53        cir.yield54      }55    }56    cir.return57  }58  // CHECK:      cir.func{{.*}} @l259  // CHECK-NEXT:   %[[I:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}60  // CHECK-NEXT:   cir.scope {61  // CHECK-NEXT:     cir.for : cond {62  // CHECK-NEXT:       %[[TRUE:.*]] = cir.const #true63  // CHECK-NEXT:       cir.condition(%[[TRUE]])64  // CHECK-NEXT:     } body {65  // CHECK-NEXT:       cir.scope {66  // CHECK-NEXT:         %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i67  // CHECK-NEXT:         cir.store %[[ZERO]], %[[I]] : !s32i, !cir.ptr<!s32i>68  // CHECK-NEXT:       }69  // CHECK-NEXT:       cir.yield70  // CHECK-NEXT:     } step {71  // CHECK-NEXT:       cir.yield72  // CHECK-NEXT:     }73  // CHECK-NEXT:   }74  // CHECK-NEXT:   cir.return75  // CHECK-NEXT: }76 77  cir.func @l3() {78    cir.scope {79      cir.for : cond {80        %0 = cir.const #true81        cir.condition(%0)82      } body {83        cir.scope {84          %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init, const] {alignment = 4 : i64}85          %2 = cir.const #cir.int<0> : !s32i86          cir.store %2, %1 : !s32i, !cir.ptr<!s32i>87        }88       cir.yield89      } step {90        cir.yield91      }92    }93    cir.return94  }95  // CHECK:      cir.func{{.*}} @l396  // CHECK-NEXT:   %[[I:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}97  // CHECK-NEXT:   cir.scope {98  // CHECK-NEXT:     cir.for : cond {99  // CHECK-NEXT:       %[[TRUE:.*]] = cir.const #true100  // CHECK-NEXT:       cir.condition(%[[TRUE]])101  // CHECK-NEXT:     } body {102  // CHECK-NEXT:       cir.scope {103  // CHECK-NEXT:         %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i104  // CHECK-NEXT:         cir.store %[[ZERO]], %[[I]] : !s32i, !cir.ptr<!s32i>105  // CHECK-NEXT:       }106  // CHECK-NEXT:       cir.yield107  // CHECK-NEXT:     } step {108  // CHECK-NEXT:       cir.yield109  // CHECK-NEXT:     }110  // CHECK-NEXT:   }111  // CHECK-NEXT:   cir.return112  // CHECK-NEXT: }113}114