26 lines · c
1// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -std=c23 -emit-llvm -o - | FileCheck %s2 3struct Bits {4 int pad1: 30;5 bool b: 1;6 int pad2: 1;7};8 9int main(void) {10// CHECK-LABEL: define dso_local i32 @main() #0 {11 struct Bits x;12 x.b += __builtin_complex(-1.0f, 0.0f);13// CHECK: %bf.load = load i32, ptr %x, align 414// CHECK-NEXT: %bf.lshr = lshr i32 %bf.load, 3015// CHECK-NEXT: %bf.clear = and i32 %bf.lshr, 116// CHECK-NEXT: %bf.cast = trunc i32 %bf.clear to i117// CHECK-NEXT: %conv = uitofp i1 %bf.cast to float18 19// CHECK: %0 = zext i1 %tobool1 to i3220// CHECK-NEXT: %bf.load2 = load i32, ptr %x, align 421// CHECK-NEXT: %bf.shl = shl i32 %0, 3022// CHECK-NEXT: %bf.clear3 = and i32 %bf.load2, -107374182523// CHECK-NEXT: %bf.set = or i32 %bf.clear3, %bf.shl24// CHECK-NEXT: store i32 %bf.set, ptr %x, align 425}26