xref: /aosp_15_r20/external/clang/test/CodeGenCXX/copy-assign-volatile-synthesis.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
2*67e74705SXin Li // rdar://9894548
3*67e74705SXin Li 
4*67e74705SXin Li typedef unsigned long word_t;
5*67e74705SXin Li typedef unsigned long u64_t;
6*67e74705SXin Li typedef unsigned int u32_t;
7*67e74705SXin Li 
8*67e74705SXin Li class ioapic_redir_t {
9*67e74705SXin Li public:
10*67e74705SXin Li  union {
11*67e74705SXin Li   struct {
12*67e74705SXin Li    word_t vector : 8;
13*67e74705SXin Li 
14*67e74705SXin Li    word_t delivery_mode : 3;
15*67e74705SXin Li    word_t dest_mode : 1;
16*67e74705SXin Li 
17*67e74705SXin Li    word_t delivery_status : 1;
18*67e74705SXin Li    word_t polarity : 1;
19*67e74705SXin Li    word_t irr : 1;
20*67e74705SXin Li    word_t trigger_mode : 1;
21*67e74705SXin Li 
22*67e74705SXin Li    word_t mask : 1;
23*67e74705SXin Li    word_t _pad0 : 15;
24*67e74705SXin Li 
25*67e74705SXin Li    word_t dest : 8;
26*67e74705SXin Li   };
27*67e74705SXin Li   volatile u32_t raw[2];
28*67e74705SXin Li   volatile u64_t raw64;
29*67e74705SXin Li  };
30*67e74705SXin Li };
31*67e74705SXin Li 
32*67e74705SXin Li struct ioapic_shadow_struct
33*67e74705SXin Li {
34*67e74705SXin Li  ioapic_redir_t redirs[24];
35*67e74705SXin Li } ioapic_shadow[16];
36*67e74705SXin Li 
init_ioapic(unsigned long ioapic_id)37*67e74705SXin Li void init_ioapic(unsigned long ioapic_id)
38*67e74705SXin Li {
39*67e74705SXin Li      ioapic_redir_t entry;
40*67e74705SXin Li      ioapic_shadow[ioapic_id].redirs[3] = entry;
41*67e74705SXin Li }
42*67e74705SXin Li 
43*67e74705SXin Li // CHECK: call void @llvm.memcpy
44