brintos

brintos / llvm-project-archived public Read only

0
0
Text · 866 B · 2d743fb Raw
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