brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · d94da81 Raw
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