33 lines · plain
1 2// RUN: cir-opt %s --verify-roundtrip | FileCheck %s3 4!u64i = !cir.int<u, 64>5!u8i = !cir.int<u, 8>6!void = !cir.void7module {8 cir.func dso_local @_Z11test_allocam(%arg0: !u64i) -> !cir.ptr<!void> {9 %0 = cir.alloca !u64i, !cir.ptr<!u64i>, ["n", init] {alignment = 8 : i64}10 %1 = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["__retval"] {alignment = 8 : i64}11 cir.store %arg0, %0 : !u64i, !cir.ptr<!u64i>12 %2 = cir.load align(8) %0 : !cir.ptr<!u64i>, !u64i13 // Dynamically sized alloca14 %3 = cir.alloca !u8i, !cir.ptr<!u8i>, %2 : !u64i, ["bi_alloca"] {alignment = 16 : i64}15 %4 = cir.cast bitcast %3 : !cir.ptr<!u8i> -> !cir.ptr<!void>16 cir.store %4, %1 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>17 %5 = cir.load %1 : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>18 cir.return %5 : !cir.ptr<!void>19 }20 21 // CHECK: cir.func dso_local @_Z11test_allocam(%arg0: !u64i) -> !cir.ptr<!void> {22 // CHECK: %0 = cir.alloca !u64i, !cir.ptr<!u64i>, ["n", init] {alignment = 8 : i64}23 // CHECK: %1 = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["__retval"] {alignment = 8 : i64}24 // CHECK: cir.store %arg0, %0 : !u64i, !cir.ptr<!u64i>25 // CHECK: %2 = cir.load align(8) %0 : !cir.ptr<!u64i>, !u64i26 // CHECK: %3 = cir.alloca !u8i, !cir.ptr<!u8i>, %2 : !u64i, ["bi_alloca"] {alignment = 16 : i64}27 // CHECK: %4 = cir.cast bitcast %3 : !cir.ptr<!u8i> -> !cir.ptr<!void>28 // CHECK: cir.store %4, %1 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>29 // CHECK: %5 = cir.load %1 : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>30 // CHECK: cir.return %5 : !cir.ptr<!void>31 // CHECK: }32}33