// RUN: cir-opt %s --verify-roundtrip | FileCheck %s !void = !cir.void cir.func @E() { %0 = cir.alloca !cir.ptr, !cir.ptr>, ["ptr", init] {alignment = 8 : i64} %1 = cir.alloca !cir.ptr, !cir.ptr>, ["ptr2", init] {alignment = 8 : i64} %2 = cir.alloca !cir.ptr, !cir.ptr>, ["ptr3", init] {alignment = 8 : i64} %3 = cir.alloca !cir.ptr, !cir.ptr>, ["ptr4", init] {alignment = 8 : i64} %4 = cir.block_address <@E, "D"> : !cir.ptr cir.store align(8) %4, %0 : !cir.ptr, !cir.ptr> %5 = cir.block_address <@E, "C"> : !cir.ptr cir.store align(8) %5, %1 : !cir.ptr, !cir.ptr> %6 = cir.load align(8) %0 : !cir.ptr>, !cir.ptr cir.br ^bb1(%6 : !cir.ptr) ^bb1(%7: !cir.ptr): // pred: ^bb0 cir.indirect_br %7 : !cir.ptr, [ ^bb5, ^bb4, ^bb3, ^bb2 ] ^bb2: // pred: ^bb1 cir.label "A" cir.br ^bb3 ^bb3: // 2 preds: ^bb1, ^bb2 cir.label "B" %8 = cir.block_address <@E, "B"> : !cir.ptr cir.store align(8) %8, %2 : !cir.ptr, !cir.ptr> %9 = cir.block_address <@E, "A"> : !cir.ptr cir.store align(8) %9, %3 : !cir.ptr, !cir.ptr> cir.br ^bb4 ^bb4: // 2 preds: ^bb1, ^bb3 cir.label "C" cir.br ^bb5 ^bb5: // 2 preds: ^bb1, ^bb4 cir.label "D" cir.return } // CHECK: cir.indirect_br %7 : !cir.ptr, [ // CHECK: ^bb5, // CHECK: ^bb4, // CHECK: ^bb3, // CHECK: ^bb2 // CHECK: ]