| // 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 |