// RUN: cir-opt %s --verify-roundtrip | FileCheck %s !u64i = !cir.int !u8i = !cir.int !void = !cir.void module { cir.func dso_local @_Z11test_allocam(%arg0: !u64i) -> !cir.ptr { %0 = cir.alloca !u64i, !cir.ptr, ["n", init] {alignment = 8 : i64} %1 = cir.alloca !cir.ptr, !cir.ptr>, ["__retval"] {alignment = 8 : i64} cir.store %arg0, %0 : !u64i, !cir.ptr %2 = cir.load align(8) %0 : !cir.ptr, !u64i // Dynamically sized alloca %3 = cir.alloca !u8i, !cir.ptr, %2 : !u64i, ["bi_alloca"] {alignment = 16 : i64} %4 = cir.cast bitcast %3 : !cir.ptr -> !cir.ptr cir.store %4, %1 : !cir.ptr, !cir.ptr> %5 = cir.load %1 : !cir.ptr>, !cir.ptr cir.return %5 : !cir.ptr } // CHECK: cir.func dso_local @_Z11test_allocam(%arg0: !u64i) -> !cir.ptr { // CHECK: %0 = cir.alloca !u64i, !cir.ptr, ["n", init] {alignment = 8 : i64} // CHECK: %1 = cir.alloca !cir.ptr, !cir.ptr>, ["__retval"] {alignment = 8 : i64} // CHECK: cir.store %arg0, %0 : !u64i, !cir.ptr // CHECK: %2 = cir.load align(8) %0 : !cir.ptr, !u64i // CHECK: %3 = cir.alloca !u8i, !cir.ptr, %2 : !u64i, ["bi_alloca"] {alignment = 16 : i64} // CHECK: %4 = cir.cast bitcast %3 : !cir.ptr -> !cir.ptr // CHECK: cir.store %4, %1 : !cir.ptr, !cir.ptr> // CHECK: %5 = cir.load %1 : !cir.ptr>, !cir.ptr // CHECK: cir.return %5 : !cir.ptr // CHECK: } }