brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 5e8c584 Raw
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