================ @@ -0,0 +1,65 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -mms-bitfields -fclangir -emit-cir %s -o %t.cir +// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -mms-bitfields -fclangir -emit-llvm %s -o %t-cir.ll +// RUN: FileCheck --input-file=%t-cir.ll %s --check-prefix=LLVM +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -mms-bitfields -emit-llvm %s -o %t.ll +// RUN: FileCheck --input-file=%t.ll %s --check-prefix=OGCG + +struct s1 { + int f32 : 2; + long long f64 : 30; +} s1; + +// CIR-DAG: !rec_s1 = !cir.record<struct "s1" {!s32i, !s64i}> +// LLVM-DAG: %struct.s1 = type { i32, i64 } +// OGCG-DAG: %struct.s1 = type { i32, i64 } + +struct s2 { + int a : 24; + char b; + int c : 30; +} Clip; + +// CIR-DAG: !rec_s2 = !cir.record<struct "s2" {!s32i, !s8i, !s32i}> +// LLVM-DAG: %struct.s2 = type { i32, i8, i32 } +// OGCG-DAG: %struct.s2 = type { i32, i8, i32 } + +#pragma pack (push,1) + +struct Inner { + unsigned int A : 1; + unsigned int B : 1; + unsigned int C : 1; + unsigned int D : 30; +} Inner; + +#pragma pack (pop) + +// CIR-DAG: !rec_Inner = !cir.record<struct "Inner" {!u32i, !u32i}> +// LLVM-DAG: %struct.Inner = type { i32, i32 } +// OGCG-DAG: %struct.Inner = type { i32, i32 } + +#pragma pack(push, 1) + +union HEADER { + struct A { + int : 3; // Bits 2:0 + int a : 9; // Bits 11:3 + int : 12; // Bits 23:12 + int b : 17; // Bits 40:24 + int : 7; // Bits 47:41 + int c : 4; // Bits 51:48 + int : 4; // Bits 55:52 + int d : 3; // Bits 58:56 + int : 5; // Bits 63:59 + } Bits; +} HEADER; + +#pragma pack(pop) + ---------------- Andres-Salamanca wrote:
I can’t add those tests because we currently don’t have upstream ILE support https://github.com/llvm/llvm-project/pull/155663. I saw that this is in the process of being upstreamed, but bitfields were left out. https://github.com/llvm/llvm-project/pull/156085 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits