| // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s |
| // rdar://9894548 |
| |
| typedef unsigned long word_t; |
| typedef unsigned long u64_t; |
| typedef unsigned int u32_t; |
| |
| class ioapic_redir_t { |
| public: |
| union { |
| struct { |
| word_t vector : 8; |
| |
| word_t delivery_mode : 3; |
| word_t dest_mode : 1; |
| |
| word_t delivery_status : 1; |
| word_t polarity : 1; |
| word_t irr : 1; |
| word_t trigger_mode : 1; |
| |
| word_t mask : 1; |
| word_t _pad0 : 15; |
| |
| word_t dest : 8; |
| }; |
| volatile u32_t raw[2]; |
| volatile u64_t raw64; |
| }; |
| }; |
| |
| struct ioapic_shadow_struct |
| { |
| ioapic_redir_t redirs[24]; |
| } ioapic_shadow[16]; |
| |
| void init_ioapic(unsigned long ioapic_id) |
| { |
| ioapic_redir_t entry; |
| ioapic_shadow[ioapic_id].redirs[3] = entry; |
| } |
| |
| // CHECK: call void @llvm.memcpy |