21 lines · plain
1// RUN: cir-opt %s --verify-roundtrip | FileCheck %s2 3!s32i = !cir.int<s, 32>4!u32i = !cir.int<u, 32>5 6 7!rec_S = !cir.record<struct "S" {!u32i}>8#bfi_c = #cir.bitfield_info<name = "c", storage_type = !u32i, size = 17, offset = 15, is_signed = true>9 10// CHECK: #bfi_c = #cir.bitfield_info<name = "c", storage_type = !u32i, size = 17, offset = 15, is_signed = true>11 12// Use bitfield to enforce printing the attribute13cir.func dso_local @init(%arg0: !cir.ptr<!rec_S> ){14 %0 = cir.alloca !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>, ["s", init] {alignment = 8 : i64}15 cir.store %arg0, %0 : !cir.ptr<!rec_S>, !cir.ptr<!cir.ptr<!rec_S>>16 %1 = cir.load align(8) %0 : !cir.ptr<!cir.ptr<!rec_S>>, !cir.ptr<!rec_S>17 %2 = cir.get_member %1[0] {name = "c"} : !cir.ptr<!rec_S> -> !cir.ptr<!u32i>18 %3 = cir.get_bitfield(#bfi_c, %2 : !cir.ptr<!u32i>) -> !s32i19 cir.return20}21