brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 6ae019b Raw
63 lines · plain
1// RUN: cir-opt %s -cir-goto-solver --verify-roundtrip -o - | FileCheck %s2 3!void = !cir.void4 5cir.func @a(){6  %0 = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["ptr", init] {alignment = 8 : i64}7  %1 = cir.block_address <@a, "label1"> : !cir.ptr<!void>8  cir.store align(8) %1, %0 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>9  cir.br ^bb110^bb1:11  cir.label "label1"12  cir.br ^bb213^bb2:14  // This label is not referenced by any blockaddressOp, so it should be removed15  cir.label "label2"16  cir.return17}18 19// CHECK:  cir.func @a()20// CHECK:   %1 = cir.block_address <@a, "label1"> : !cir.ptr<!void>21// CHECK: ^bb1:22// CHECK:   cir.label "label1"23// CHECK:   cir.br ^bb224// CHECK: ^bb2:25// CHECK-NOT: cir.label "label2"26 27cir.func @b(){28  %0 = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["ptr", init] {alignment = 8 : i64}29  %1 = cir.block_address <@b, "label1"> : !cir.ptr<!void>30  cir.store align(8) %1, %0 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>31  cir.goto "label2"32^bb1:33  cir.label "label1"34  cir.br ^bb235^bb2:36  // This label is not referenced by any blockaddressOp, so it should be removed37  cir.label "label2"38  cir.return39}40 41// CHECK: cir.func @b() {42// CHECK:   %1 = cir.block_address <@b, "label1"> : !cir.ptr<!void>43// CHECK:   cir.store align(8) %1, {{.*}} : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>44// CHECK:   cir.br ^bb245// CHECK: ^bb1:46// CHECK:   cir.label "label1"47// CHECK:   cir.br ^bb248// CHECK: ^bb2:49// CHECK-NOT: cir.label "label2"50 51cir.func @c() {52  cir.label "label1"53  %0 = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["ptr", init] {alignment = 8 : i64}54  %1 = cir.block_address <@c, "label1"> : !cir.ptr<!void>55  cir.store align(8) %1, %0 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>56  cir.return57}58 59// CHECK: cir.func @c60// CHECK:   cir.label "label1"61// CHECK:   %1 = cir.block_address <@c, "label1"> : !cir.ptr<!void>62// CHECK:   cir.store align(8) %1, {{.*}} : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>63