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