Home | History | Annotate | Download | only in CodeGenCXX
      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