42 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir -fdump-record-layouts %s -o - | FileCheck %s2 3struct SimpleStruct {4 int a;5 float b;6} simple;7// CHECK: Layout: <CIRecordLayout8// CHECK: CIR Type:!cir.record<struct "SimpleStruct" {!cir.int<s, 32>, !cir.float}>9// CHECK: NonVirtualBaseCIRType:!cir.record<struct "SimpleStruct" {!cir.int<s, 32>, !cir.float}>10// CHECK: IsZeroInitializable:111// CHECK: BitFields:[12// CHECK: ]>13 14struct Empty {15} empty;16 17// CHECK: Layout: <CIRecordLayout18// CHECK: CIR Type:!cir.record<struct "Empty" padded {!cir.int<u, 8>}>19// CHECK: NonVirtualBaseCIRType:!cir.record<struct "Empty" padded {!cir.int<u, 8>}>20// CHECK: IsZeroInitializable:121// CHECK: BitFields:[22// CHECK: ]>23 24struct BitfieldsInOrder {25 char a;26 unsigned bit: 8;27 unsigned should : 20;28 unsigned have: 3;29 unsigned order: 1;30} bitfield_order;31 32// CHECK: Layout: <CIRecordLayout33// CHECK: CIR Type:!cir.record<struct "BitfieldsInOrder" {!cir.int<s, 8>, !cir.int<u, 8>, !cir.int<u, 32>}>34// CHECK: NonVirtualBaseCIRType:!cir.record<struct "BitfieldsInOrder" {!cir.int<s, 8>, !cir.int<u, 8>, !cir.int<u, 32>}>35// CHECK: IsZeroInitializable:136// CHECK: BitFields:[37// CHECK-NEXT: <CIRBitFieldInfo name:bit offset:0 size:8 isSigned:0 storageSize:8 storageOffset:1 volatileOffset:0 volatileStorageSize:0 volatileStorageOffset:0>38// CHECK-NEXT: <CIRBitFieldInfo name:should offset:0 size:20 isSigned:0 storageSize:32 storageOffset:4 volatileOffset:0 volatileStorageSize:0 volatileStorageOffset:0>39// CHECK-NEXT: <CIRBitFieldInfo name:have offset:20 size:3 isSigned:0 storageSize:32 storageOffset:4 volatileOffset:0 volatileStorageSize:0 volatileStorageOffset:0>40// CHECK-NEXT: <CIRBitFieldInfo name:order offset:23 size:1 isSigned:0 storageSize:32 storageOffset:4 volatileOffset:0 volatileStorageSize:0 volatileStorageOffset:0>41// CHECK:]>42